线程如何在加入之前运行循环?

Mr.*_*Boy 0 c++ multithreading stl c++11

使用std::thread运行它运行一个无限循环,是有办法,如果线程被要求参加环可以查询的方法......还是我必须手动添加一个"了ExitThread"标志?

换句话说,isJoined看起来像什么(未经测试的伪代码):

std::atomic<int> global_counter (0);

void Run()
{
  while(!isJoined())
  {
    doSomething();
    ++global_counter;
  }
}

int main()
{
  thread t(Run);
  Sleep(10000);
  t.join();
  cout << "Iterated " << global_counter << "times" << endl;
}
Run Code Online (Sandbox Code Playgroud)

Dan*_* S. 8

你要做的不仅是加入线程,还要发送消息.这两件事是不同的,你需要做两件事.

要向线程发送消息,请使用条件变量发出信号.既然你知道你需要的东西的名字,你可以谷歌,你会发现大量的好教程解释如何使用这个概念发信号,所以我觉得没有必要在这里详细说明.