【发布时间】:2023-03-27 13:08:01
【问题描述】:
如果我像这样在一个线程中更新一个变量: 接收计数器++;
然后从另一个线程我只读取这个变量并将其值写入 GUI。
这样安全吗?或者这条指令是否可以在中间被中断,所以当另一个线程读取它时,receiveCounter 中的值是错误的?它一定是对的,因为 ++ 不是原子的,它是几个指令。
我不关心读取和写入的同步,它只需要递增然后在 GUI 中更新,但这不必彼此直接发生。
我关心的是值不能错。就像 ++ 操作在中间被中断所以读取的值完全关闭。
我需要锁定这个变量吗?我真的不想,因为它经常更新。我可以通过将消息发布到主线程并将值复制到队列来解决这个问题(然后需要锁定,但我不会在每次更新时都这样做)我猜。
不过我还是对上面的问题很感兴趣。
【问题讨论】:
-
你说的是什么语言?
标签: c++ multithreading atomic