5、线程A执行第100次i++,将内存中的值(现在是1)取回CPU1的寄存器!!,并执行加1,此时CPU1的寄存器中的值为2,内存中为1; 6、线程B执行完所有操作,并将其放回内存,此时CPU2的寄存器值为100,内存中为100; 注:B执行完100次i++,则CPU2寄存器值为100,写入内存,100覆盖了原来的1 7、线程A执行100次操作的...
第二种极端情况:线程一和线程二间隔操作,即线程一对i++操作完成,把已经加一的数据放回去之后线程二再操作,轮流进行,最后每个线程都对i加了100次,i的值为200
题目:i的初始值为0,i++在两个线程里面分别执行100次,能得到最大值和最小值分别是多少,程序员大本营,技术文章内容聚合第一站。
写⼊内存,100覆盖了原来的1 7、线程A执⾏100次操作的最后⼀部分,将CPU1中的寄存器值放回内存(值为2,见第5步),内存中的值为2;8、结束!!注:最⼤值200的情况,就说两个线程在执⾏的时候均没有被中断,交替执⾏ 所以,该题⽬便可以得出最终结果,最⼩值为2,最⼤值为200.
5、线程A执行第100次i++,将内存中的值(现在是1)取回CPU1的寄存器!!,并执行加1,此时CPU1的寄存器中的值为2,内存中为1; 6、线程B执行完所有操作,并将其放回内存,此时CPU2的寄存器值为100,内存中为100; 注:B执行完100次i++,则CPU2寄存器值为100,写入内存,100覆盖了原来的1 ...
最小值情况:线程A执行读变量操作,线程B执行100次i++运算完毕,线程A执行+1操作和写回变量操作,此时...