Gibt es etwas wie boost::thread_group
in C++ 11?boost :: thread_group in C++ 11?
Ich versuche nur, mein Programm von boost:thread
zu C++ 11 Threads portieren und konnte nichts Entsprechendes finden.
Gibt es etwas wie boost::thread_group
in C++ 11?boost :: thread_group in C++ 11?
Ich versuche nur, mein Programm von boost:thread
zu C++ 11 Threads portieren und konnte nichts Entsprechendes finden.
Nein, es gibt nichts, was in C++ 11 boost::thread_group
direkt entspricht. Sie können eine std::vector<std::thread>
verwenden, wenn alles, was Sie wollen, ein Container ist. Sie können dann entweder die neue for
-Syntax oder std::for_each
verwenden, um join()
für jedes Element oder was auch immer aufzurufen.
Seit 2012 gibt es eine bessere Lösung für dieses Problem? – pyCthon
Ich möchte hinzufügen, dass es wirklich keine Magie in "boost :: thread_group" gibt, es ist ein wenig mehr als ein Vektor von Threads (das "kleine mehr" sind einige Dienstprogrammfunktionen wie 'join_all' und' create_thread'). –
thread_group
hat es nicht in C++ 11 und C++ 14 Standards geschafft.
Aber eine Abhilfe ist einfach:
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();
}
Boost-Threads und 11 ++ C Themen sind unterschiedlich. Ich persönlich benutze weiterhin Boost-Threads wegen der vollständigeren API (und der fehlenden aktuellen Implementierung von zB lokalem Thread-Speicher). –