Hallo an alle, Ich verwende Multi Threading in C++ 11. Ich möchte einen Mechanismus machen, in dem alle laufenden und abgeschlossenen Threads verfolgt werden. Wenn ein Thread beendet wird, wird automatisch der beendete Thread erstellt. Hat jemand eine Idee, wie man das in C++ 11 implementiert? Vielen Dank im Voraus.Wie verfolgen Sie die Beendigung des Threads in C++ 11
Antwort
gemeinsame Muster-Code zu schreiben, die Ausnahmen wickeln Sie es in einer Schleife und versuchen, Block, wie dies überlebt:
for(;;) {
try {
// Your code here
} catch (const std::exception& e) {
// Log exception
} catch (...) {
// Log unknown exception
}
}
Es ist üblich, in Server: wenn dient Benutzeranforderung fehlschlägt, dann melden Sie es, Die aktuelle Verbindung abbrechen und versuchen, die nächste Verbindung herzustellen. Natürlich besteht die Möglichkeit, dass etwas wirklich Schreckliches passiert ist und alle weiteren Versuche scheitern. Sie müssen also darauf achten, Ihren PC nicht mit einer Endlosschleife zu überlasten, die es immer wieder versucht.
Sie können diese Schleife in Ihren Thread einfügen, so dass sie nicht abstürzt, wenn etwas passiert, oder anstatt Threads direkt zu verwenden, können Sie std::future
verwenden und den Code future.get() in diese Schleife einfügen.
- 1. Wie FreeAndNill() nach der Beendigung des Threads automatisch ausgeführt wird
- 2. C++ 11 Threads mit clang
- 3. Leistung von Threads in C++ 11
- 4. Verhindern, dass Threads in C++ stauen. 11
- 5. Verzögerter Start eines Threads in C++ 11
- 6. Wie verfolgen Sie die Sekunden?
- 7. So bestätigen Sie die Beendigung des vorherigen Befehls in Powershell
- 8. Eine RW-Sperre für C++ 11 Threads
- 9. Beenden eines Threads von einer Callback-Funktion in C++ 11
- 10. Do C++ 11 Threads bieten eine Möglichkeit für losgelöste Threads nach dem Beenden des Hauptthreads fortzusetzen?
- 11. Wie Win32 Prozess Erstellung/Beendigung in C++
- 12. Wie ProgressDialog nach Beendigung aller Threads zu entlassen?
- 13. Verfolgen Sie den Methodenablauf in Bezug auf Threads in Java.
- 14. Wie verfolgen Sie die Anwendungsnutzung?
- 15. Wie verfolgen Sie die Datensatzbeziehungen in NoSQL?
- 16. Verfolgen Sie den Timer wiederholt in C++
- 17. Wie Sie die Datenelemente in C++ 11 ordnungsgemäß initialisieren?
- 18. Überprüfen des Objekttypen in C++ 11
- 19. Beendigung des Programms beim Beenden
- 20. Verfolgen Sie alle Objektreferenzen in C#
- 21. Wie synchronisiert man Instanzen einer Funktion, die auf verschiedenen Threads läuft (in C++ 11)?
- 22. So verfolgen Sie die IP-Adresse des Signierers in DocuSign
- 23. verfolgen C++ Speicherzuweisungen
- 24. Nehmen Sie mehrere Argumente an die Thread-Funktion C++ 11
- 25. C++ 11 Thema: Mehrere Threads auf eine Zustandsvariable warten
- 26. Gemeinsame Variablen in C++ 11
- 27. Variable Anzahl von asynchronen Threads mit C++ 11
- 28. boost :: thread_group in C++ 11?
- 29. C++ 11 Threads mit geteilten Mutex und Klasseninstanz
- 30. Wie -std-C++ 11 in Eclipse C++
Ich gehe davon aus, dass Sie * den abgeschlossenen Thread * beitreten werden? Eine einfache Lösung ist nur ein atomares boolesches Flag, das der Thread vor dem Beenden zuletzt setzt. Der Hauptthread fragt dieses Flag ab, und wenn es gesetzt ist, dann trete dem Thread bei. –
Um den @Someprogrammerdude-Kommentar hinzuzufügen, beachten Sie, dass einige * -Thread-Bibliotheken * (z. B. * pthreads *) einen zusätzlichen * nicht blockierenden Join * enthalten, der das Problem des * polling * des * thread-Status * vor dem * Beitritt * beseitigt. Es könnte weniger effizient sein, aber es sollte zu einem saubereren Design führen. –
Danke für deine Wiederholung @Someprogrammerdude. Ich habe noch nie eine atomare Flagge benutzt. Wo sollte ich diese boolesche Flagge in meinem Programm hinzufügen müssen? –