我已经在网上搜索过,但我一无所获。
我知道汇编的源代码(例如 c++)在启动时不会复制到虚拟内存。事实上,当我创建一个新的类实例时,会在内存中创建一个新的变量实例,但类程序代码仍保留在只读内存中(例如硬盘或闪存),因此只有一个程序代码用于 X 类(? ).
现在我将这些类放入 2 个新线程中。因此,如果我同时以异步模式启动两个线程并启动在该类中声明的函数,是否意味着我同时调用了 SAME 函数?
例子:
class test
{
int _test()
{
int temp = 0;
temp += 1; // thread 2 would call this ..
temp = temp / 2; // .. while thread 1 is already here which means temp+=1 was called twice - (0+1+1)/2 = 1 !!
}
};
int main()
{
test test1;
test test2;
new_async_thread(test1._test());
new_async_thread(test2._test());
}
最佳答案
函数的代码将是相同的。但是声明的参数 和局部变量 将放在单独的堆栈空间中。因此,SAME 代码将对Different 数据进行操作。
关于c++ - 类函数+线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23509587/