前提
i++不是原子操作,也就是说,它不是单独一条指令,而是3条指令:
1、从内存中把i的值取出来放到CPU的寄存器中
2、CPU寄存器的值+1
3、把CPU寄存器的值写回内存
分析 假设两个线程的执行步骤如下:
|
|
结果
多核cpu,最小值2,最大值200
单核cpu,最小值100,最大值200
No results found
i++不是原子操作,也就是说,它不是单独一条指令,而是3条指令:
1、从内存中把i的值取出来放到CPU的寄存器中
2、CPU寄存器的值+1
3、把CPU寄存器的值写回内存
|
|
多核cpu,最小值2,最大值200
单核cpu,最小值100,最大值200
本文标题:i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?
文章作者:Vincent Zhong
发布时间:2016-10-04, 17:31:39
最后更新:2019-07-07, 13:13:10
原始链接:https://wax8280.github.io/2016/10/04/i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?/
许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。