同步对象锁定在一个线程中并在另一个线程中释放

时间:2014-07-07 09:58:17

标签: c# multithreading locking

我有一个案例,我希望在函数调用中获取(锁定)资源,但是在回调(不同的线程)中发出了进程结束的信号。 (资源是外部的:基本上,某个总线在我启动时会变忙,并且在回调时再次释放。)

对于锁定/关键部分,这根本不可能。我也试过Mutex,但只得到异常,可能是因为我在另一个帖子中发布了。

这里有什么选择?

似乎我可以

  1. 创建bool以“手动”同步它们(锁定访问volatile bool,然后执行while()睡眠而不是WaitOne)
  2. 使用事件在第3个包装线程中对整个事物进行单线程处理,然后再管理同步对象
  3. 为了简单起见,我可能会选择bool。或者优选地由运行时提供的任何机制。 回调来自外部库。

    更新:我刚刚发现了信号量,这似乎符合我的需要。我会问任何人,以防有人有更好的想法/其他人也认为这有用。

1 个答案:

答案 0 :(得分:2)

解决问题的一种简单方法是使用AutoResetEvent:在线程中等待它,并通知在另一个线程中释放锁。