gpt4 book ai didi

c# - 对象分配线程安全吗?

转载 作者:太空狗 更新时间:2023-10-29 22:11:10 27 4
gpt4 key购买 nike

这个线程安全吗?具体来说,GetMyObject() 方法是否可能返回 null?我知道两个线程有​​可能获得 MyObject 的不同实例,但我不关心这个。 我只是想确保假设 GetMyObject() 永远不会返回 null 是安全的。

   class Foo {
private static MyObject obj;
public static MyObject GetMyObject() {
MyObject o = obj;
if(o == null) {
o = new MyObject();
obj = o;
}
return o;
}
public static void ClearMyObject() {
obj = null;
}
}

class MyObject {}

最佳答案

Is this thread safe?

没有。

is it possible for the GetMyObject() method to return null?

没有。

该方法保证永远不会返回 null。并且所有的读写都保证是原子的。但是,线程不能保证读取最新版本的静态字段 obj线程不能保证对 obj 的更改顺序有一致的看法。任意多个线程可能会竞争并观察 obj 的不同值。因此,我不会认为这段代码是“线程安全的”,但也许您对“线程安全”有不同的定义。这就是问这个问题的问题;没有每个人都可靠地同意的术语的标准定义。

关于c# - 对象分配线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678012/

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