假设我们有一个c ++类,如:
class MyClass { void processArray() { int i ; for (i=0;i<255;i++) { // do something with values in the array } } }
和类的一个实例如:
MyClass myInstance ;
和2个线程调用该实例的processArray方法(取决于系统如何执行线程,可能是完全不规则的顺序).该范围内没有使用互斥锁,因此两个线程都可以进入.
我的问题是我发生了什么?每个线程范围是否拥有它自己的"i",或者每个进入线程都会在for循环中修改i,导致i一直在奇怪地改变.
i
在堆栈上分配.由于每个线程都有自己独立的堆栈,因此每个线程都有自己的副本i
.