Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah cara saya mencipta kumpulan benang menggunakan Boost dalam C?

Bagaimanakah cara saya mencipta kumpulan benang menggunakan Boost dalam C?

DDD
DDDasal
2024-11-25 18:15:13587semak imbas

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

Mencipta Kolam Benang dengan Boost dalam C

Dalam C , mencipta kumpulan benang menggunakan perpustakaan Boost memerlukan proses yang mudah.

Pertama, nyatakan asio::io_service dan thread_group. Selepas itu, isi thread_group dengan thread yang disambungkan ke io_service. Tugas kemudiannya boleh diberikan kepada utas menggunakan fungsi boost::bind.

Untuk menghentikan utas, hanya hentikan io_service dan gabungkan kesemuanya.

Fail pengepala yang diperlukan ialah:

#include <boost/asio/io_service.hpp>
#include <boost/bind.hpp>
#include <boost/thread/thread.hpp>

Contoh pelaksanaan disediakan di bawah:

// 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();

(Sumber: Resipi < Asio)

Atas ialah kandungan terperinci Bagaimanakah cara saya mencipta kumpulan benang menggunakan Boost dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn