Maison > développement back-end > C++ > Comment créer un pool de threads à l'aide de Boost en C ?

Comment créer un pool de threads à l'aide de Boost en C ?

DDD
Libérer: 2024-11-25 18:15:13
original
663 Les gens l'ont consulté

How do I create a thread pool using Boost in C  ?

Création d'un pool de threads avec Boost en C

En C, la création d'un pool de threads à l'aide de la bibliothèque Boost nécessite un processus simple.

Tout d'abord, instanciez un asio::io_service et un thread_group. Ensuite, remplissez le thread_group avec les threads connectés au io_service. Des tâches peuvent ensuite être assignées aux threads à l'aide de la fonction boost::bind.

Pour arrêter les threads, arrêtez simplement le io_service et combinez-les tous.

Les fichiers d'en-tête nécessaires sont :

#include <boost/asio/io_service.hpp>
#include <boost/bind.hpp>
#include <boost/thread/thread.hpp>
Copier après la connexion

Un exemple de mise en œuvre est fourni ci-dessous :

// Establish an io_service and a thread_group (essentially a pool)
boost::asio::io_service ioService;
boost::thread_group threadpool;

// Commence ioService processing loop
boost::asio::io_service::work work(ioService);

// Add threads to pool (e.g., two in this case)
threadpool.create_thread(
    boost::bind(&boost::asio::io_service::run, &ioService)
);
threadpool.create_thread(
    boost::bind(&boost::asio::io_service::run, &ioService)
);

// Assign tasks to thread pool via ioService.post()
// Refer to "http://www.boost.org/doc/libs/1_54_0/libs/bind/bind.html#with_functions" for details on boost::bind
ioService.post(boost::bind(myTask, "Hello World!"));
ioService.post(boost::bind(clearCache, "./cache"));
ioService.post(boost::bind(getSocialUpdates, "twitter,gmail,facebook,tumblr,reddit"));

// Halt ioService processing loop (no new tasks will execute after this point)
ioService.stop();

// Wait and combine threads in thread pool
threadpool.join_all();
Copier après la connexion

(Source : Recettes < Asio)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal