Re[6]: Lib-ы которым нужен явный init/deinit
От: remark Россия http://www.1024cores.net/
Дата: 27.03.08 12:15
Оценка:
Здравствуйте, Sergey, Вы писали:


>> Идеально было бы получать нотификации о создании/удалении потоков, но не с

>> помощью отдельной динамической библиотеки. Но как это захачить под Win32,
>> я не видел... Поищу в форуме Win32 — может кто знает...

S>IMHO, в случае статической либы это можно захачить только если CRT тоже

S>прилинкована статически. Подробности можно посмотреть в boost::thread, в
S>реализации очистки tss. Смысл метода в том, что для очистки связаных с
S>потоком вещей сама CRT должна откуда-то получать нотификации. Ну она их и
S>получает, и при желании туда можно вклинится — там насколько помню есть
S>специальным образом названная PE-секция, и все что в ней лежит CRT считает
S>коллбэками на функции зачистки. То ли статья, то ли развернутый пост в
S>форуме про этот способ были на кодепроджекте. Другие способы широкой
S>общественности вроде как не известны. Я правда года два назад этим вопросом
S>интересовался, может чего и появилось с тех пор.


Да. Действительно. Я ведь там смотрел. Но куда-то не туда посмотрел, и решил, что они всё ещё требуют чтобы thread был как dll под win32.
Вот статья:
http://www.codeguru.com/Cpp/misc/misc/threadsprocesses/article.php/c6945__2/

Реализация в libs\thread\src\tss_pe.cpp

То, что работает только со статическим ран-таймом я пока не нашёл. И это очень многообещающе.
Там только написано:
#if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB) && defined(_MSC_VER)

И в статье написано только:
Environment: Visual C++ 6 and above (may work on earlier versions too), for .exe's and DLL's running under Windows 95 and later, including console apps.




1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.