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, nicht std::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ür thread_local Variablen ausführen. VC++ nicht implementiert thread_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 bei async 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.
Schreibe einen Kommentar