线程同步互斥
多个线程对一个全局变量做加法,假设全局变量初始值为0,2个线程,每个线程循环3次对全局变量加一,怎么分析可能的结果
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
多个线程对一个全局变量做加法,假设全局变量初始值为0,2个线程,每个线程循环3次对全局变量加一,怎么分析可能的结果
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
加一是指自增,这个是原子的吗?原子的话最后是6。不是原子的话,就不一定是多少了。
具体可能结果,跟指令集、内存模型啥的都会有关 ...
你是想问什么,一般多线程操作全局变量是要上lock的,不上lock分析个啥,要是多核cpu那可说不准等于几……
自己结一下题,问题可能问的不是很清晰,分析的话要可以从汇编的运算去理解,先把数据读到寄存器,然后执行操作,再写回对应地址空间,当多个线程需要运作时,系统会利用时间片轮转方式调度线程,每段时间只有一个线程在工作,不断轮转线程队列,然而当轮转到下一个线程,当前线程还没有完成最后的写入操作就被暂停放入队尾,当该线程再次被轮转,继续上次的写入工作,产生写入覆盖。因此最后的结果很大概率比预想的小,具体是多少值确实很多情况,不好分析。