Heim > Artikel > Backend-Entwicklung > Wie erstelle ich einen Thread-Pool mit Boost in C?
In C erfordert das Erstellen eines Thread-Pools mithilfe der Boost-Bibliothek einen unkomplizierten Prozess.
Erstens: Instanziieren Sie einen asio::io_service und eine thread_group. Füllen Sie anschließend die thread_group mit Threads, die mit dem io_service verbunden sind. Mithilfe der boost::bind-Funktion können den Threads dann Aufgaben zugewiesen werden.
Um die Threads anzuhalten, beenden Sie einfach den io_service und kombinieren Sie alle.
Die erforderlichen Header-Dateien sind:
#include <boost/asio/io_service.hpp> #include <boost/bind.hpp> #include <boost/thread/thread.hpp>
Eine Beispielimplementierung finden Sie unten:
// 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();
(Quelle: Rezepte < Asio)
Das obige ist der detaillierte Inhalt vonWie erstelle ich einen Thread-Pool mit Boost in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!