use*_*206 2 c c++ multithreading race-condition
我遇到了这个问题:
给定两个线程和一个全局变量
var,两个线程运行相同的代码(C/C++代码):Run Code Online (Sandbox Code Playgroud)for(int i=0; i<20; i++) { var++; }
var线程执行结束时可能的值是什么?
如果每个线程var"正确" 递增- 我猜最大值将是40.
但最低价值呢?如何实施增量操作并实际完成?
注意:在有意增加操作中没有锁定(任何类型)(当然,正确的方法是锁定它 - 问题是出于教育目的).
如果var是没有一个原子类型,则行为是不确定的.因此,关于可能的最终值范围的问题是不适当的.
如果var是原子类型,那么最终结果就好像线程没有并发运行一样.