C'è qualcosa come boost::thread_group
in C++ 11?boost :: thread_group in C++ 11?
Sto solo cercando di trasferire il mio programma dall'utilizzo di thread da boost:thread
a C++ 11 e non è stato in grado di trovare nulla di equivalente.
C'è qualcosa come boost::thread_group
in C++ 11?boost :: thread_group in C++ 11?
Sto solo cercando di trasferire il mio programma dall'utilizzo di thread da boost:thread
a C++ 11 e non è stato in grado di trovare nulla di equivalente.
No, non c'è niente direttamente equivalente a boost::thread_group
in C++ 11. Potresti usare un std::vector<std::thread>
se tutto ciò che vuoi è un contenitore. È quindi possibile utilizzare la nuova sintassi for
o std::for_each
per chiamare join()
su ciascun elemento o altro.
Dal 2012 c'è stata una soluzione migliore a questo problema? – pyCthon
Vorrei aggiungere che non c'è davvero alcuna magia in "boost :: thread_group", è un po 'più di un vettore di thread (il "poco più" sono alcune funzioni di utilità come 'join_all' e' create_thread'). –
thread_group
non sono stati convertiti in standard C++ 11 e C++ 14.
Ma una soluzione è semplice:
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();
}
fili Boost e C++ 11 fili sono diversi. Personalmente continuo a utilizzare i thread di boost a causa dell'API più completa (e della mancanza di implementazione corrente, ad esempio di archiviazione locale dei thread). –