多线程 - 一个作家和一个读者 - 我们需要使用储物柜吗?

时间:2015-03-18 18:43:33

标签: c++ multithreading thread-synchronization

在任何具有一个编写器线程和一个读取器线程的多线程应用程序中,我们是否需要使用储物柜? 例如:

public void example::increase() {
   counter++;
}

public int example::getValue() {
   return counter;
}
  1. 在这个例子中,我们需要储物柜吗?
  2. 如果我们不使用储物柜,应用程序可能会崩溃吗?
  3. 由于

1 个答案:

答案 0 :(得分:0)

它确实有效,而不是取决于你的目的。如果你真的不在乎读者是否会读取旧的,未增加的值或新的递增值,那么这不会是一个大问题。如果你这样做,那么你需要放置锁并可能强制执行命令。

例如,你不能指望这样的代码:

counter= 0
CreateThread(Writer)
CreateThread(Writer)
CreateThread(Reader)

在这种情况下,您不能指望阅读器会读取2,它可能会读取0,1或2。