使用wait()和signal()有什么好处?

时间:2013-07-22 02:58:42

标签: c linux multithreading mutex semaphore

为什么我们应该在多线程应用程序中使用wait()和signal()操作?

我对多线程相对较新,并且有点理解互斥,但我需要更好地理解wait()和signal()如何进入等式。

似乎我只使用lock()和unlock()来实现线程安全。我错了吗?

有人可以给我一个使用等待/信号的例子,等待和信号没有用于锁定/解锁吗?使用等待/信号而不是锁定/解锁有什么好处?

感谢。

2 个答案:

答案 0 :(得分:1)

我从事计算数学/科学工作,所以我的例子来自那里。

如果你正在进行缩减操作,例如点积(需要总结许多计算),那么锁定和解锁是有用的,因为总和的顺序无关紧要,如果它是空闲的,那么线程应该去。

如果您在下一个时间步骤之前解决PDE需要完成上一个时间步骤,则锁定/解锁将不起作用,即使数据可以自由修改,先决条件计算可能不会已经完成,这是你使用等待/信号的地方。

答案 1 :(得分:0)

Cramer你的回答给了我很好的提示但是这页上的答案正是我需要的解释。

Conditional Variable vs Semaphore

相关问题