如果我像这样在一个线程中更新一个变量:receiveCounter++;
然后从另一个线程我只读取这个变量并将它的值写入GUI。
那安全吗?或者这条指令是否可以在中间被中断,所以当另一个线程读取它时,receiveCounter 中的值是错误的?它一定是正确的,因为 ++ 不是原子的,它是几条指令。
我不关心同步读取和写入,它只需要递增然后在 GUI 中更新,但这不必直接发生在彼此之后。
我关心的是值不能错。就像 ++ 操作在中间被中断,所以读取值完全关闭。
我需要锁定这个变量吗?我真的不想,因为它经常更新。我可以通过将消息发布到主线程并将值复制到队列来解决这个问题(然后需要锁定,但我不会在每次更新时都这样做)我猜。
但无论如何我对上述问题很感兴趣。