如何放置线程数组的动态大小

时间:2016-03-30 12:10:02

标签: c++ arrays multithreading c++11

正如你所看到的,我想创建几个threads.Now线程数取决于我从控制台获得的命令行参数,所以基本上没有要创建的线程必须是动态的但是创建线程类的对象数组在C ++ 11中需要给出一个const大小,这就是我出现问题的地方,因为它只是在没有使用变量的情况下初始化时接受“num_threads”(即,使用文字)。
赞:static const int num_threads=10;
但不是:static const int num_threads=stoi(argv[1]);

int main(int argc, char *argv[])
{
  if(argc!=2)
  {
     cout << "\n Invalid arguments \n";
     return 0;
  }

  static  const int num_threads = 10;// stoi(argv[1]);//
  thread t[num_threads];


 //Launch a group of threads
 for (int i = 0; i < num_threads; ++i) 
 {
    t[i] = std::thread(call_from_main_to_connect_info_disconnect, i);
 }

 std::cout << "Launched from the main\n";

//Join the threads with the main thread
 for (int i = 0; i < num_threads; ++i) 
 {
    t[i].join();
 }

 getchar();
 return err;

}

为了让 没有线程动态通过命令行 输入,有什么建议吗?

1 个答案:

答案 0 :(得分:5)

您可以使用:

std::thread *t = new std::thread[num_threads];

或使用std::vector

std::vector<std::thread> t(num_threads);