想象一下,你有双重锁:二进制信号VS互斥
Ex:
mutex.lock();
mutex.lock();
Ex:
binarysemaphore.wait();
binarysemaphore.wait();
请问这两种行为有什么不同?或者他们会是一样的。
想象一下,你有双重锁:二进制信号VS互斥
Ex:
mutex.lock();
mutex.lock();
Ex:
binarysemaphore.wait();
binarysemaphore.wait();
请问这两种行为有什么不同?或者他们会是一样的。
我假定你的意思递归锁(不是双锁)
操作是否会有所不同完全取决于平台和执行。
我认为在Windows中,默认值是Mutexes是递归的(所以可重入锁定工作),信号量不是。
但是,在pthreads(POSIX)上,您可以根据自己的喜好进行配置。
+1指出了对平台的依赖。如果我没有记错,Posix确实支持一种递归互斥锁,但它不可移植。 – 2011-04-26 04:15:08
@Als:根据我的手册页(和[其他来源](http://cursuri.cs.pub.ro/~apc/2003/resources/pthreads/uguide/users-gu.htm)),'pthread_mutexattr_gettype( PTHREAD_MUTEX_RECURSIVE
在研究中,我们被告知Semaphore
与max count = 1
等于Mutex
。
这并不完全正确。
Mutex
不能被任何其他线程释放。Semaphore
可以用于这种情况。
我不熟悉术语“双锁”。你的意思是“递归互斥”吗? – 2011-04-25 21:29:15