Это потокобезопасный способ инициализации [ThreadStatic]?
[ThreadStatic] приватная статическая Foo _foo; public static Foo CurrentFoo { получить { if (_foo == null) { _foo = new Foo(); } вернуть _foo; } }
Предыдущий поток кода безопасен? Или нам нужно заблокировать метод?
2 ответа
Решение
Если его ThreadStatic есть одна копия на поток. Так что, по определению, его поток безопасен.
[ThreadStatic]
это магия компилятора / языка для локального хранилища потоков. Другими словами, он связан с потоком, поэтому даже если есть переключение контекста, это не имеет значения, потому что никакой другой поток не может получить к нему доступ напрямую.