Информация об изменениях

Сообщение Re[5]: еще один вопрос от 06.02.2017 9:45

Изменено 06.02.2017 9:48 ononim

Re[5]: еще один вопрос
O>>Потому что потоку, чтобы завершиться, требуется захватить PEB loader lock — тот самый лок, который захватывается на время вызова DllMain. В результате — дедлок. Кстати чтобы потоку начать исполняться тоже требуется вначале сходить под этот лок, так что находясь в DllMain нельзя ждять не только завершения потока, но и вообще каких-либо действий с его стороны.
ksd>ответ: дедлок обходится евентом.
ksd>вопрос: что, таки DllMain морозит все потоки dll-ки?
Еще раз. Перед тем как начать исполнять ThreadRoutine и после его завершения поток на короткое время захыватывает PEB loader lock, которым накрыт DllMain. Так что пока какой то поток сидит внутри DllMain никакой другой поток не сможет завершиться окончательно или начать исполнение рутины. И совершенно не ясно причем тут евент.
Re[5]: еще один вопрос
O>>Потому что потоку, чтобы завершиться, требуется захватить PEB loader lock — тот самый лок, который захватывается на время вызова DllMain. В результате — дедлок. Кстати чтобы потоку начать исполняться тоже требуется вначале сходить под этот лок, так что находясь в DllMain нельзя ждять не только завершения потока, но и вообще каких-либо действий с его стороны.
ksd>ответ: дедлок обходится евентом.
ksd>вопрос: что, таки DllMain морозит все потоки dll-ки?
Еще раз. Перед тем как начать исполнять ThreadRoutine и после его завершения поток на короткое время захыватывает PEB loader lock, которым накрыт DllMain. Так что пока какой то поток сидит внутри DllMain никакой другой поток не сможет завершиться окончательно или начать исполнение рутины.