什么是AutoResetEvent和Mutex之间的区别

时间:2012-01-11 06:27:08

标签: c# multithreading mutex autoresetevent

我是这些概念的新手。但随着我在threading的深入,我感到困惑。

mutexsemaphoreautoresetevent的重要性是什么。

我在研究中发现的唯一区别是mutex可以跨过程操作执行。如果是这种情况,为什么它与SetResetWaitOne的方法不同。

我们可以将AutoResetEvent替换为mutex,反之亦然?

请解决这个难题。

2 个答案:

答案 0 :(得分:19)

不同的概念 - Mutex是一个独占令牌;只有一个人可以拥有它;当他们释放它时,其他人可以战胜它。 AutoResetEvent是一个门,在关闭之前只允许一个人通过,并且由一个与想要通过的队列分开的按钮操作。当他们立即通过门关闭。

答案 1 :(得分:0)

要视情况而定。

通常,可以替换AutoResetEvent和Mutex,即AutoResetEvent.WaitOne = Mutex.WaitOne和AutoResetEvent.Set = Mutex.ReleaseMutex。

但是它们是不同的。您可能会提到Mutex有一个“发布”,这意味着您可以在调用“ WaitOne”时“获取”某些东西。您可能得到的东西与正在调用的线程有关。

您可以在任何线程中调用AutoResetEvent.Set。但是您只能从名为Mutex.WaitOne的线程中调用Mutex.ReleaseMutex,并获得真实的结果。