在任何具有一个编写器线程和一个读取器线程的多线程应用程序中,我们是否需要使用储物柜? 例如:
public void example::increase() {
counter++;
}
public int example::getValue() {
return counter;
}
由于
答案 0 :(得分:0)
它确实有效,而不是取决于你的目的。如果你真的不在乎读者是否会读取旧的,未增加的值或新的递增值,那么这不会是一个大问题。如果你这样做,那么你需要放置锁并可能强制执行命令。
例如,你不能指望这样的代码:
counter= 0
CreateThread(Writer)
CreateThread(Writer)
CreateThread(Reader)
在这种情况下,您不能指望阅读器会读取2,它可能会读取0,1或2。