Verwaltung von std::future-Objekten
-
Hallo!
In einem Serverprojekt benutze ich
std::async, um ein paar Aufgaben asynchron auszuführen (die Aufgaben werden nach einem Timeout durchgeführt).
Es kann beliebig viele solcher Aufgaben geben, also muss ich die std::future-Objekte organisieren und wollte sie in einer synchronisierten std::list speichern.Da der Arbeitsspeicher aber begrenzt ist, will ich eine Obergrenze für die Anzahl der Futures in der Liste, aber wie überprüfe ich, welches Future zu einem Thread gehört, welcher noch läuft, ohne den prüfenden Thread mit wait() zu blockieren?
Ich habe mehr und mehr das Gefühl, lieber std::thread benutzt zu haben.
-
Jodocus schrieb:
[...]welcher noch läuft, ohne den prüfenden Thread mit wait() zu blockieren?[...]
Wenn ich alles richtig mitgekriegt habe willst Du sowas haben:
auto status = future.wait_for(std::chrono::milliseconds(0)); std::cout << (status == std::future_status::ready ? "Thread finished" : "Thread running");Das blockiert nicht.
-
Was machst du denn mit den Ergebnissen aus den Futures, wenn die Threads fertig sind?
Wozu wird die Liste synchronisiert?