Влияет ли изменение культуры потока threadpool на него, когда он возвращается обратно в пул?

StackOverflow https://stackoverflow.com/questions/1467194

Вопрос

Если я установлю CurrentCulture что происходит с потоком пула потоков, когда поток завершает выполнение и возвращается обратно в пул потоков?Получает ли это свое CurrentCulture сбросьте значение по умолчанию (что бы это ни значило), или он сохранит язык, который я для него установил?

Я надеюсь, что фреймворк переводит поток в состояние по умолчанию, чтобы защититься от этого, но не могу найти никакой документации на этот счет.Самое близкое, что я нашел, - из документов MSDN для Пул потоков:

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

Это, по-видимому, указывает на то, что поток не сбросьте его, когда он будет возвращен.

Я попробовал несколько примеров кода, чтобы попытаться протестировать это, и это делает кажется, что культура сброшена, но я не уверен, что я тестирую это поведение правильно, поскольку я думаю, что использую только небольшое подмножество потоков ThreadPool, и поэтому не могу быть уверен, что тестирую поток, для которого уже установлена культура.

Это было полезно?

Решение

Я бы не стал полагаться на ThreadPool когда - либо сброс информации, в частности, из-за текста, который вы процитировали.

Если вы беспокоитесь об "изменении" культуры пула потоков, я бы обязательно сбросил ее, когда ваша потоковая задача будет завершена.Это достаточно простая задача.

Я не верю, что текущий threadpool делает это, но даже если это сделал, было бы небезопасно предполагать, что реализация ThreadPool в .NET 4+ не изменится.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top