Bre*_*ret 5 c# multithreading thread-safety
这个线程安全吗?具体来说,该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 {}
Run Code Online (Sandbox Code Playgroud)
这个线程安全吗?
没有.
GetMyObject()方法是否可以返回null?
没有.
保证该方法永远不会返回null.并且所有的读写都保证是原子的.但是,不保证线程读取最新版本的静态字段obj,并且不保证线程具有对obj的更改序列的一致视图.任意多个线程可能会竞争并观察不同的obj值.我不认为这个代码"线程安全",但也许你有一个不同的"线程安全"定义.这是问这个问题的问题; 每个人都可以认可的术语没有标准定义.
| 归档时间: |
|
| 查看次数: |
597 次 |
| 最近记录: |