Имейте в виду, что это было в 2008 году - I верят, что .NET 4 намного быстрее для полей ThreadStatic
, чем .NET 3.5. Я точно не помню, но вы можете запускать тесты, если хотите.
Тем не менее, я не уверен в описании теста, потому что это нереально. Вам нужно действительно нужно многократно читать нить-локальное поле в цикле? Разве это не более вероятно, что вы прочтете его один раз, а затем немного позже в другой части кода?
В конечном счете, реальный вопрос заключается в том, работает ли один или оба этих подхода достаточно хорошо для вашего конкретного требования. Я предпочитаю ThreadLocal<T>
по номеру ThreadStatic
не по соображениям производительности, а потому, что он позволяет провести соответствующую инициализацию - например, в моем article on randomness.
Отличная статья о случайности и спасибо за ответ Jon. Я закончил работу с ThreadLocal просто потому, что это более умный (и безопасный экземпляр) по сравнению с ThreadStatic. – Mark
@Mark: Точно - это намного приятнее :) –