互斥锁只能被等待该锁的线程释放,这是真的吗?如果是,为什么互斥锁会表现出这种行为?那为什么我们说互斥锁可以跨多个进程工作?什么是命名互斥锁和匿名互斥锁?我对这个问题感到非常困惑!
如果我想在一个线程中等待互斥锁,并从另一个线程发出信号,我该怎么做?
互斥锁只能被等待该锁的线程释放,这是真的吗?如果是,为什么互斥锁会表现出这种行为?那为什么我们说互斥锁可以跨多个进程工作?什么是命名互斥锁和匿名互斥锁?我对这个问题感到非常困惑!
如果我想在一个线程中等待互斥锁,并从另一个线程发出信号,我该怎么做?
mut<非常请愿,只有在确实知道自己在做什么时才使用>
:-) - paxdiablo互斥锁具有所有权 - 请参阅paxdiablo的帖子。如果您想在一个线程中等待某些东西并从另一个线程发出信号,请不要使用互斥锁!事件-OK,条件变量-OK,监视器-OK,信号量-OK,事件-OK,互斥锁-不OK。
敬礼, 马丁
你不能从任何其他线程发出互斥信号(= Mut-ual Ex-clusion内核同步构造),除非是获取它的那个线程。
简短的回答是,当互斥锁被释放(由拥有线程)时,其他线程将被通知。
也就是说,所有等待互斥锁的线程将竞争互斥锁的所有权,获胜者将从等待调用中返回并继续执行,拥有互斥锁的所有权。
这就是使用互斥锁与自己协调信号之间的区别。我的回答是否解决了你的问题,或者我误解了你的问题?
敬礼 丹尼尔
Mutex
类吗?需要明确一点,因为互斥锁是一个通用的概念,而System.Threading.Mutex
是其具体实例。文档提供了使用说明,请参见:http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx 此外,有关 C# 中条件变量的更多信息,请参见此问题:https://dev59.com/VXI-5IYBdhLWcg3wKVE9 - Steve Townsend