Lou*_*hys 3 .net c# concurrency thread-safety mutual-exclusion
使用lock语句,可以"确保一个线程不进入代码的关键部分而另一个线程在关键部分.如果另一个线程试图输入锁定的代码,它将等待,阻塞,直到该对象被释放".
如果我想要的行为是,如果另一个线程试图输入锁定的代码,它将跳过整个代码(而不是等待锁被释放)怎么办?我想到的一个想法就是使用旗帜,比如说
if(flag) return;
flag = true;
//do stuff here
flag =false;
Run Code Online (Sandbox Code Playgroud)
但我知道这不安全,因为两个线程可以在任何人设置为true之前传递第一行,或者如果异常情况下该标志永远不会设置为false.你能提出改进或替代吗?
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |