二进制信号量与互斥量

时间:2011-04-25 21:20:07

标签: c++ mutex semaphore

想象一下你有一把双锁:

Ex:

mutex.lock();
mutex.lock();

Ex:

binarysemaphore.wait();
binarysemaphore.wait();

这两者的行为会有所不同吗?或者他们会是一样的。

2 个答案:

答案 0 :(得分:4)

我认为你的意思是递归锁定(不是双重锁定)

操作是否会有所不同完全取决于平台和实施。

我认为在Windows中,默认情况下,互斥锁是递归的(因此可重入锁定工作),而信号量不是。

但是,在pthreads(POSIX)上,你可以按照你喜欢的方式配置它。

答案 1 :(得分:0)

在研究期间,我们被告知Semaphore max count = 1等于Mutex

这不完全正确。

    任何其他线程都无法释放
  1. Mutex
  2. Semaphore可以在这种情况下使用。