boost :: thread_group в C ++ 11? - PullRequest
       28

boost :: thread_group в C ++ 11?

25 голосов
/ 27 марта 2012

Есть ли что-то вроде boost::thread_group в C ++ 11?

Я просто пытаюсь перенести мою программу из потоков boost:thread в C ++ 11 и не смог ничего найтиэквивалент.

Ответы [ 2 ]

28 голосов
/ 27 марта 2012

Нет, в C ++ 11 нет ничего, что прямо эквивалентно boost::thread_group.Вы можете использовать std::vector<std::thread>, если вам нужен только контейнер.Затем вы можете использовать либо новый синтаксис for, либо std::for_each для вызова join() для каждого элемента, либо что угодно.

7 голосов
/ 27 января 2016

thread_group не соответствует стандартам C ++ 11 и C ++ 14.

Но обходной путь прост:

  std::vector<std::thread> grp;

  // to create threads
  grp.emplace_back(functor); // pass in the argument of std::thread()

  void join_all() {
    for (auto& thread : grp)
      if (thread.joinable())
        thread.join();
  }
...