为什么我们应该在多线程应用程序中使用wait()和signal()操作?
我对多线程相对较新,并且有点理解互斥,但我需要更好地理解wait()和signal()如何进入等式。
似乎我只使用lock()和unlock()来实现线程安全。我错了吗?
有人可以给我一个使用等待/信号的例子,等待和信号没有用于锁定/解锁吗?使用等待/信号而不是锁定/解锁有什么好处?
感谢。
答案 0 :(得分:1)
我从事计算数学/科学工作,所以我的例子来自那里。
如果你正在进行缩减操作,例如点积(需要总结许多计算),那么锁定和解锁是有用的,因为总和的顺序无关紧要,如果它是空闲的,那么线程应该去。
如果您在下一个时间步骤之前解决PDE需要完成上一个时间步骤,则锁定/解锁将不起作用,即使数据可以自由修改,先决条件计算可能不会已经完成,这是你使用等待/信号的地方。
答案 1 :(得分:0)
Cramer你的回答给了我很好的提示但是这页上的答案正是我需要的解释。