Toa*_*oad 5 .net c# multithreading synchronization
我只是想做一个简单但通过线程安全的布尔测试(和设置),所以:
if(myBoolean==false) //should not lock/wait!
{
myBoolean=true;
.....
}
else
{
....
}
Run Code Online (Sandbox Code Playgroud)
我考虑过以下(虽然可能不正确,所以请在我误解的地方纠正我)
任何人都知道以有效的方式执行此操作的类/构造是什么?
答案(Intelocked.CompareExchange)已经给出,但这是我的用法示例:
private int _isDisposing;
public bool IsDisposing
{
get
{
return this._isDisposing != 0;
}
}
public void Dispose()
{
// Side note: I may want to `return` instead of `throw`
if (Interlocked.CompareExchange(ref _isDisposing, 1, 0) != 0)
throw new InvalidOperationException("Dispose was recursively called.");
try
{
Dispose(true);
GC.SuppressFinalize(this);
}
finally
{
_isDisposing = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3260 次 |
| 最近记录: |