kol*_*osy 11 c# multithreading volatile
我们遇到了性能问题,一个潜在的罪魁祸首是集中使用易失性单例.具体代码是表单
class foo {
static volatile instance;
static object l = new object();
public static foo Instance {
if (instance == null)
lock(l) {
if (instance == null)
instance = new foo();
}
return foo();
}
}
Run Code Online (Sandbox Code Playgroud)
这是在一个8路的盒子上运行,我们看到上下文切换到每秒500,000的调整.典型的系统资源很好 - 25%cpu util,25%内存util,低IO,无分页等.
使用volatile字段是否会导致内存屏障或任何类型的cpu缓存重新加载?或者它只是每次都追踪主存储器,仅用于该字段?
| 归档时间: |
|
| 查看次数: |
1971 次 |
| 最近记录: |