2010-11-03 42 views
16

Est-il possible de créer un pool de threads en utilisant le thread de boost? Je regardais partout libs de boost et je ne pouvais pas trouver un gestionnaire de pool de threads (ou quelque chose comme ça) ... Y at-il un moyen de le faire?Création d'un pool de threads en utilisant boost

tnx!

+0

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

+0

J'ai posté un exemple de pool de threads en utilisant boost :: asio ici. [Enfilez Piscine Exemple avec boost :: asio] [1] [1]: http://stackoverflow.com/questions/31835009/c-threadpool-is-not-running-parallel/31835802 # 31835802 – DannyK

+0

Copie possible de [Comment créer un pool de threads en utilisant boost en C++?] (Https://stackoverflow.com/questions/19500404/how-to-create-a-thread-pool-using-boost- in-c) –

Répondre

8

Il y a un threadpool non-officiel (encore) en boost. Mais ce n'est pas un problème d'en implémenter un, surtout si la grande généricité n'est pas un objectif primordial. Idée: votre pool de threads peut être paramétré avec le type TaskType et le nombre de travailleurs. Le TP doit recevoir la fonction de gestionnaire qui prend TaskType. TP contient une file de tâches ajoutées. La fonction de thread réel prend simplement une tâche de la file d'attente et appelle le gestionnaire passé. Quelque chose comme ca.

+0

J'espérais qu'ils ont déjà ajouté la bibliothèque de pool de threads .. Une idée si elle va bientôt être ajoutée? merci beaucoup pour votre réponse rapide! – grich

+0

Je ne sais pas avec certitude, mais je devine et espère que ThreadPool et Process seront à 1.45 –

+0

La bibliothèque de la bibliothèque de threads était belle; dommage que la documentation manque (plusieurs pages indiquent TODO et préviennent que la description est périmée). On dirait qu'il n'a pas reçu beaucoup d'attention depuis 2008. –

34

Je sais qu'une réponse a été acceptée, si vous en avez besoin maintenant, et que vous ne pouvez pas écrire votre propre pool de threads, vous pouvez essayer d'utiliser boost asio io_service avec un indice de concurrence (ie combien de threads devrait fonctionner), puis post() trucs à ce io_service ... juste une idée ..

+4

Utiliser boost asio est la bonne façon de procéder. Mieux vaut ne pas gérer le pool de threads directement. De la même manière que le fait Intel Threading Building Blocks (TBB). – hackworks

+0

Peut-on en ajouter plus? ça a l'air très intéressant! – grich

+13

Consultez ce lien pour plus d'informations: http://think-async.com/Asio/Recipes – Ralf