我曾经把这作为一个面试问题,但我不确定答案。
如果用100个线程计算c = c + 1,你需要锁吗?
答案 0 :(得分:1)
是。原因是语句c = c + 1
实际上是(大约)三个低级语句:
1. read c from the memory
2. increment c by one
3. store c back to the memory
如果两个线程执行(1)
,它们都会将c
增加到相同的值并存储它。因此,c
不会增加两次,而是只增加一次。
答案 1 :(得分:0)
是的,几乎所有支持并发的编程语言。