Şöyle yaparız.
Şöyle yaparız.
boost::thread_group tg;
add_thread metoduŞöyle yaparız.
tg.add_thread(new boost::thread(boost::bind(&foo::init, foo)));
create_thread metodu
Açıklaması şöyle.
Şöyle yaparız.
asio ile kullanmak için şöyle yaparız.
ÖrnekCreate a new boost::thread object as-if bynew thread(threadfunc)
and add it to the group.
Şöyle yaparız.
tg.create_thread(boost::bind (..., ...));
Örnekasio ile kullanmak için şöyle yaparız.
boost::asio::io_service ios;
//Create thread-pool now
size_t numThreads = boost::thread::hardware_concurrency();
for(size_t t = 0; t < numThreads; t++) {
tg.create_thread (boost::bind(&boost::asio::io_service::run, &ios));
}
join_all metodu
Şöyle yaparız.
Şöyle yaparız.
thread_group sınıfı dışında boost'a dahil olmayan ancak aynı isim alanını kullanana bir proje daha var.
Örnek
Şöyle yaparız.
tg.join_all();
asio ile kolayca kullanmakŞöyle yaparız.
struct Processing {
Processing() {
for (unsigned i=0; i < boost::thread::hardware_concurrency(); ++i)
threads.create_thread([this] { ios.run(); });
}
~Processing() {
work.reset();
threads.join_all();
}
void submit(std::string const& name, model::cluster const& cluster) {
ios.post([=] { do_processing(name, cluster); });
}
private:
void do_processing(std::string const& name, model::cluster const& cluster) {
boost::this_thread::sleep_for(boost::chrono::milliseconds(950));
}
ba::io_service ios;
boost::optional<ba::io_service::work> _work = ba::io_service::work(ios);
boost::thread_group threads;
};
Diğerthread_group sınıfı dışında boost'a dahil olmayan ancak aynı isim alanını kullanana bir proje daha var.
Örnek
Şöyle yaparız.
#include <boost/thread.hpp>
#include <boost/threadpool.hpp>
boost::threadpool::pool GAPopulation::thpool(5);
for(int i = 0; i < p.size(); i++) {
thpool.schedule(boost::bind( ..., ...));
}
thpool.wait();
Hiç yorum yok:
Yorum Gönder