_DEN_ Такие странные правила, разве ты не знал? Получается что в DllMain поток создается как-бы приостановленным, и возобновляется только после выхода из нее. В аттаче пример кода на Delphi (+ скомпилированный тест). Наблюдая его под отладчиком (Olly), можно заметить что код потока ThreadProc не выполняется во время выполнения DllMain. 446014953__demodll.ZIP
alpet А откуда CreateThread знает что его запустили из DllMain? Чем вобще енвайромент кода DllMain отличается от всего остального кода? Вобщем, как говорится, в чем смысл жизни, вселенной и вообще?
_DEN_ Исходники Windows наверняка могут пролить свет на эту тайну. Наверное изначально программисты реализовавшие данный механизм, не хотели чтобы функция являющаяся обработчиком события DLL_THREAD_ATTACH вызывалась единовременно из двух потоков (сначала обрабатывая например DLL_PROCESS_ATTACH, и немного погодя обрабатывая DLL_THREAD_ATTACH в контексте созданного потока). Иными словами внесена сериализация вызовов DLLMain, дабы прикладному программисту не приходилось париться над синхронизацией.