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

Multithreaded - One Writer And One Reader - Do We Need To Use Lockers?

本文关键字:一个 储物柜 作家 多线程 我们      更新时间:2023-10-16

在任何有一个编写器线程和一个读取器线程的多线程应用程序中,我们需要使用lockers吗?例如:

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

感谢

它很有效,不取决于您的目的。如果你真的不在乎读取器是读取旧的、未增量的值还是读取新的、增量的值,那么这不会有多大问题。如果你这样做了,那么你需要上锁,也许还需要强制执行命令。

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

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

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