多个线程对一个全局变量做加法,假设全局变量初始值为0,2个线程,每个线程循环3次对全局变量加一,怎么分析可能的结果
自己结一下题,问题可能问的不是很清晰,分析的话要可以从汇编的运算去理解,先把数据读到寄存器,然后执行操作,再写回对应地址空间,当多个线程需要运作时,系统会利用时间片轮转方式调度线程,每段时间只有一个线程在工作,不断轮转线程队列,然而当轮转到下一个线程,当前线程还没有完成最后的写入操作就被暂停放入队尾,当该线程再次被轮转,继续上次的写入工作,产生写入覆盖。因此最后的结果很大概率比预想的小,具体是多少值确实很多情况,不好分析。
2 回答2k 阅读✓ 已解决
1 回答1.5k 阅读
加一是指自增,这个是原子的吗?原子的话最后是6。不是原子的话,就不一定是多少了。
具体可能结果,跟指令集、内存模型啥的都会有关 ...