Pule wątków w C ++ 11
Odpowiednie pytania:
O C ++ 11:
C ++ 11: std :: thread połączone w pule?Czy async (uruchomienie :: async) w C ++ 11 sprawi, że pule wątków staną się przestarzałe w celu uniknięcia kosztownego tworzenia wątków?O zwiększeniu:
Wątek zwiększający wątek C ++boost :: thread i tworzenie puli!Jak uzyskaćpula wątków dowyślij zadania do, bez tworzenia i usuwania ich w kółko? Oznacza to trwałe wątki do ponownej synchronizacji bez łączenia.
Mam kod, który wygląda tak:
namespace {
std::vector<std::thread> workers;
int total = 4;
int arr[4] = {0};
void each_thread_does(int i) {
arr[i] += 2;
}
}
int main(int argc, char *argv[]) {
for (int i = 0; i < 8; ++i) { // for 8 iterations,
for (int j = 0; j < 4; ++j) {
workers.push_back(std::thread(each_thread_does, j));
}
for (std::thread &t: workers) {
if (t.joinable()) {
t.join();
}
}
arr[4] = std::min_element(arr, arr+4);
}
return 0;
}
Zamiast tworzyć i łączyć wątki w każdej iteracji, wolę wysyłać zadania do moich wątków roboczych każdej iteracji i tworzyć je tylko raz.