Ответ 1
Если в ThreadStatic есть одна копия на поток. Таким образом, по определению, его поток безопасен.
[ThreadStatic] private static Foo _foo; public static Foo CurrentFoo { get { if (_foo == null) { _foo = new Foo(); } return _foo; } }
Безопасен ли предыдущий код? Или нам нужно заблокировать метод?
Если в ThreadStatic есть одна копия на поток. Таким образом, по определению, его поток безопасен.
A [ThreadStatic]
- это магия компилятора/языка для локального хранилища потоков. Другими словами, он связан с потоком, поэтому даже если есть контекстный переключатель, это не имеет значения, потому что ни один другой поток не может получить к нему доступ напрямую.