Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich einen Thread-Pool mit Boost in C?

Wie erstelle ich einen Thread-Pool mit Boost in C?

DDD
DDDOriginal
2024-11-25 18:15:13562Durchsuche

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

Erstellen eines Thread-Pools 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn