想象一下,你有雙重鎖:二進制信號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