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!