当前位置:  开发笔记 > 编程语言 > 正文

多个C++线程如何在类方法上执行

如何解决《多个C++线程如何在类方法上执行》经验,为你挑选了1个好方法。

假设我们有一个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一直在奇怪地改变.



1> Adam Rosenfi..:

i在堆栈上分配.由于每个线程都有自己独立的堆栈,因此每个线程都有自己的副本i.


从技术上讲,它被称为堆栈变量(因为它的范围).寄存器只是一个不相关的实现细节.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有