Die std::async-Implementierungen mithilfe von thread-pools?
Einer der Vorteile der Verwendung von std::async
statt manuell erstellen std::thread
Objekte sein soll, die std::async
können mithilfe von thread-pools unter der Decke zu vermeiden, überbelegung Probleme. Aber die Implementierungen tun? Mein Verständnis ist, dass Microsoft die Umsetzung nicht, aber was ist mit diesen anderen async
Implementierungen?
- Gnu libstdc++
- Gnu libc++
- Nur Software-Bibliothek
- Boost (für
boost::thread::async
, nichtstd::async
)
Vielen Dank für alle Informationen, die Sie anbieten können.
- Thread-pools in Wirklichkeit nicht eine rechtliche Umsetzung durch Dinge wie
thread_local
; z.B.async
erforderlich ist, um entweder auf dem gleichen thread, oder als ob in einem neuen thread, was bedeuten würde, dass Konstruktoren fürthread_local
Variablen ausführen. VC++ nicht implementiertthread_local
noch nicht, aber ich bin mir nicht sicher, wie Sie Sie erstellen werden eine konforme Implementierung mit Hilfe von thread-pools. thread_local
muss nicht eine naive Verweis auf die OS-thread local storage. Die Laufzeit kann verfolgen, thread-lokale Objekte und kann Sie dadurch zerstört werden/reset beiasync
worker-thread wird an den pool zurückgegeben werden, als wenn der thread-Ende.- Ob thread-pools ist eine rechtliche Umsetzung ist eigentlich eine separate Frage. (Ich glaube der standard wurde geschrieben mit der Absicht, die thread-pools gestattet.) Meine Frage ist, welche Implementierungen verwenden eigentlich thread-pools. Diese Frage steht, auch wenn die Frage Ihrer Gültigkeit noch eingerichtet werden.