c# – 如何从另一个线程锁定方法的一部分?
发布时间:2020-12-16 00:24:55 所属栏目:百科 来源:网络整理
导读:如何从另一个线程中锁定c#中的一部分方法? 我的意思是如果其中一个线程在这里,然后退出… 例如: if(threads[0].WasHere){ return;} 解决方法 一种有效的方式是互锁交换;通过在工作期间将一些令牌字段设置为非默认值,其他线程可以检查并退出.例如: private
如何从另一个线程中锁定c#中的一部分方法?
我的意思是如果其中一个线程在这里,然后退出… 例如: if(threads[0].WasHere) { return; } 解决方法
一种有效的方式是互锁交换;通过在工作期间将一些令牌字段设置为非默认值,其他线程可以检查并退出.例如:
private int hazWorker; // = 0 - put this at the scope you want to protect 然后: // means: atomically set hazWorker to 1,but only if the old value was 0,and // tell me what the old value was (and compare that result to 0) if(Interlocked.CompareExchange(ref hazWorker,1,0) != 0) { return; // someone else has the conch } try { // your work here } finally { Interlocked.Exchange(ref hazWorker,0); // set it back to default } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读