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