gpt4 book ai didi

c# - ThreadStatic 和同步

转载 作者:行者123 更新时间:2023-11-30 14:00:16 24 4
gpt4 key购买 nike

我有以下代码。这可能是个愚蠢的问题,但我不确定是否需要同步。


class MyClass
{
[ThreadStatic]
private static object _staticObject;
private static readonly LockStaticField = new object();

public static object StaticObject
{
get
{
lock(LockStaticField)
{
return _staticObject ?? (_staticObject = new object());
}
}
}
}

我知道 ThreadStatic 字段不需要任何同步,因为状态不共享。但是静态 getter 和初始化是什么?

最佳答案

I know ThreadStatic fields doesn't need any synchronization because the state is not shared. But what is about the static getter and the initialization?

这也不需要锁定来同步,因为每个线程的数据(支持字段)都是唯一的。您可以在此处安全地解除锁定。

请注意,从 .NET 4 开始,您可能还需要考虑使用 ThreadLocal<T> 而不是 [ThreadStatic]保存任何本地线程数据。有一些优点,无论是在使用方面(即: IsValueCreated ),还是在清理方面,您都可以调用 Dispose()。直接清理所有线程上的所有实例。

关于c# - ThreadStatic 和同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com