注意:我真的不太擅长多线程编程,但我目前的项目让我这样做,所以我试图弄清楚什么是线程安全,什么不是。
我在读埃里克·利伯特的awesome answers on what ++i does。他说这是真正发生的事情:
计算代码x以生成变量
<>G212>
这让我开始思考,如果两个线程调用++i会怎么样?如果第一个线程在步骤3,而第二个线程在步骤2。(意思是说,如果第二个线程在第一个线程在变量中存储新值之前将值复制到temp位置,该怎么办?)
如果发生这种情况,那么两个线程似乎都只会递增i
一次,而不是两次。(除非整个过程都在一个lock
中。)
https://stackoverflow.com/questions/4628243
复制相似问题