找到有价值的线程

时间:2017-11-02 15:32:31

标签: c++ multithreading

以下是我的示例代码:

void bar(int node, int value1, int value2)
{
  // do stuff...
}

int main() 
{
  std::thread node1 (bar, 1, 10, 12);
  std::thread node2 (bar, 2, 21, 23);

  std::cout << "main, node 1 and 2 now execute concurrently...\n";

  // synchronize threads:
  node1.join();                // pauses until first finishes
  node2.join();               // pauses until second finishes

  std::cout << "completed.\n";

  return 0;
}

有没有办法找到有值的线程是否正在运行或存在于池中?示例:查找功能栏中值为1的节点的线程是否正在运行?或者,名称为node1的线程正在运行?

由于

1 个答案:

答案 0 :(得分:1)

每个线程都有一个值,一个标识符,所以可以做的是你可以thread.id ()来识别一个线程,并将它存储在一个数组中, 代码:

int tid [2];
thread t [2];
for(int i=0;i <2;i++)
 {
    tid [i] = t [i].id ()
  }

然后编写一个搜索函数来匹配一个带有id的线程