Подтвердить что ты не робот

Ли поток .NET ThreadPool получает reset, когда он возвращается в пул?

Когда поток потока нитей завершен, такие вещи, как Name или thread, получают локальные данные reset? Итак, когда поток в следующий раз выходит из пула, он выглядит как новый?

Существует ли "официальная" документация по этому аспекту потоков ThreadPool?

4b9b3361

Ответ 1

Он не очищает локальное хранилище потоков при его выпуске, что является самым важным аспектом, который следует отметить.

http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx

Когда пул потоков повторно использует поток, он не очищает данные в локальное хранилище потоков или в полях, отмеченных значком Атрибут ThreadStaticAttribute. Поэтому данные, помещенные в локальное хранилище потоков одним способом может быть подвержено любому другому методу который выполняется одним потоком пула потоков. Метод, который обращается к полю, помеченному ThreadStaticAttribute атрибут может встретить разные данные в зависимости от того, какой поток поток потока выполняет его.

Это нужно быть очень осторожным...

Ответ 2

Ответ: нет, он не получит reset. Однако вы не должны полагаться на этот факт, потому что это зависит от пула потоков, будет ли ваш следующий рабочий элемент выполнен в новом потоке или в повторно используемом потоке. Таким образом, вы снова можете увидеть или не увидеть "Локальное хранилище потоков". По этой причине я бы не рекомендовал использовать Thread Local Storage в пуле потоков. Реализация пула потоков является внутренней деталью и может быть изменена.

Метафора реального мира - это автобус, который вы берете на работу каждый день. Позволяет сказать, что по какой-то причине вы хотите оставить свою сумку в автобусе, потому что знаете, что ее не украдут. Это плохая идея, потому что в следующий раз, когда вы сядете на автобус, вы не сможете найти свою сумку. Просто потому, что это может быть другой автобус. Автобусное депо может вращать автобусы между линиями или может использовать старые автобусы. Подобно тому, как пул потоков может повторно использовать или удалять темы, не сообщая вам.