Maison > Article > développement back-end > Comment créer un pool de threads à l'aide de 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>
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();
(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!