0

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

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

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

有人可以给我一个使用等待/信号以及等待和信号不与锁定/解锁一起使用的示例吗?使用等待/信号而不是锁定/解锁有什么好处?

谢谢。

4

2 回答 2

1

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

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

如果您在进行下一个时间步之前求解 PDE,则需要完成上一个时间步,锁定/解锁将不起作用,因为即使数据可以自由修改,前提计算也可能尚未完成,这是您将使用等待/信号的地方。

于 2013-07-22T03:04:40.910 回答
0

克莱默你的回答给了我很好的提示,但这个页面上的答案正是我需要的解释。

条件变量与信号量

于 2013-07-22T23:39:32.113 回答