c++ - 类函数+线程

标签 c++ multithreading class

我已经在网上搜索过,但我一无所获。

我知道汇编的源代码(例如 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/

相关文章:

c++ - SDL_Renderer 使用 100% CPU 和 RAM 什么也不做

java - Java中方法、对象、类的同步

C# 多线程,三个线程并行工作并相互发送数据并按顺序工作

php - 处理错误simple_html_dom.php

c++ - 为什么这个函数调用在通过类型转换的函数指针调用它后表现得很好?

c++ - 在不止一个回文的情况下寻找最长但字典序最小的回文

javascript - 变量在定义之前被使用

字符串和不可初始化类的 PHP instanceof

c++ - int 是否隐式签名(C++)?

java - 带屏障的 Spring TaskExecutor