Глобальные переменные не уничтожены в основном потоке? - PullRequest
0 голосов
/ 18 августа 2010

У меня есть исполняемый файл смешанного режима, и я заметил, что конструктор моих собственных глобальных переменных вызывается в главном потоке, но деструктор вызывается в каком-то другом потоке.
Имя потока - 'Thread ::middleThreadProc '.

В чем причина этого?И что это за поток Thread: промежуточный_процесс?

Спасибо.

1 Ответ

4 голосов
/ 18 августа 2010

Thread :: middleThreadProc () - это небольшая вспомогательная функция в CLR, которая используется в качестве функции запуска потока для любого потока, запускаемого CLR.Найдите его в источнике SSCLI20, src \ vm \ threads.cpp

Ожидается, что этот запуск в другом потоке.Код очистки запускается, когда домен приложения выгружается.Логика CLR очень сложна, но похоже, что она будет работать, когда домен приложения в последний раз запускает поток финализатора для очистки кучи.Вы можете предположить, что все управляемые объекты мертвы и другие запущенные потоки не выполняются.Помните, что ваш код подвергается двухсекундному таймауту потока финализатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...