2010-11-03 2 views
16

Ist es möglich, einen Thread-Pool mit Boost-Thread zu erstellen? Ich suchte überall nach Boost-Bibliotheken und ich konnte keinen Thread-Pool-Manager (oder so ähnlich) finden ... Gibt es eine Möglichkeit, es zu tun?Erstellen eines Thread-Pools mit Boost

tnx!

+0

Siehe auch: http://stackoverflow.com/questions/19500404/how-to-create-a-thread-pool- using-boost-in-c –

+0

Ich habe hier ein Threadpool-Beispiel mit boost :: asio gepostet. [Thread-Pool Beispiel mit boost :: asio] [1] [1]: http://stackoverflow.com/questions/31835009/c-threadpool-is-not-running-parallel/31835802 # 31835802 – DannyK

+0

Mögliches Duplikat von [Wie erstellt man einen Thread-Pool mit Boost in C++?] (Https://stackoverflow.com/questions/19500404/how-to-create-a-thread-pool-using-boost- in-c) –

Antwort

8

Es gibt eine inoffizielle (noch) threadpool im Boost. Aber es ist kein Problem, einen selbst zu implementieren, besonders wenn große Generizität kein primäres Ziel ist. Idee: Ihr Threadpool kann mit TaskType-Typ und der Anzahl der Worker parametrisiert werden. Der TP muss die Handler-Funktion erhalten, die TaskType übernimmt. TP enthält eine Warteschlange von hinzugefügten Tasks. Die echte Thread-Funktion nimmt nur eine Aufgabe aus der Warteschlange und ruft den übergebenen Handler auf. So ähnlich.

+0

Ich hatte gehofft, dass sie bereits die threadpool-Bibliothek hinzugefügt haben .. Irgendeine Idee, wenn es bald hinzugefügt wird? Vielen Dank für Ihre schnelle Antwort! – grich

+0

Ich weiß nicht sicher, aber ich rate und hoffe, dass sowohl ThreadPool als auch Process in 1.45 sein –

+0

Die Threadpool-Bibliothek sah nett aus; Schade, dass die Dokumentation fehlt (viele Seiten geben TODO an und warnen, dass die Beschreibung veraltet ist). Sieht so aus, als hätte es seit 2008 wenig Aufmerksamkeit bekommen. –

34

Ich weiß, eine Antwort wurde akzeptiert, wenn Sie dies jetzt brauchen, und Sie nicht gestört werden, Ihren eigenen Thread-Pool zu schreiben, könnten Sie Boost Asio io_service mit einem Parallelitätshinweis versuchen (dh wie viele Threads es sollte laufen) und dann posten() Zeug zu diesem io_service ... nur eine Idee ..

+4

Boost Asio ist der richtige Weg. Besser, den Thread-Pool nicht direkt zu verwalten. Genau wie Intel-Threading-Bausteine ​​(TBB). – hackworks

+0

Kannst du mehr dazu hinzufügen? es klingt sehr interessant! – grich

+13

Überprüfen Sie diesen Link für weitere Informationen: http://think-async.com/Asio/Recipes – Ralf