|
Boost Users : |
Subject: [Boost-users] boost::asio
From: imran sheikh (s.imran0508_at_[hidden])
Date: 2014-07-14 01:58:49
hi,
I used the following piece of code after following your suggestions. Iam new to boost and even multi-threading
When I ran this piece of code on my machine I found that for every run 4 threads are only used out of the pool. As I have 4 cores in my machine. Is it so??
#include<iostream>#include<boost/asio.hpp>#include<boost/thread.hpp>boost::atomic_int thrd_gen(0);voiddowork(inti){thread_local inttid =++thrd_gen;std::cout <<"hello";std::cout <<" thread ID :"<<tid <<"\n";}intmain(){boost::asio::io_service ioservice;boost::thread_group group;boost::optional<boost::asio::io_service::work>work(boost::asio::io_service::work{ioservice});for(size_ti=0;i<boost::thread::hardware_concurrency();i++){group.create_thread(boost::bind(&boost::asio::io_service::run,&ioservice));}std::cout <<"in main thread size="<<group.size()<<std::endl;for(inti =0;i <=5;++i){for(inti=0;i<5;i++){ioservice.post(boost::bind(dowork,10));}boost::this_thread::sleep_for(boost::chrono::milliseconds(600));std::cout <<"waking up\n";}work.reset();// allow threads to exitgroup.join_all();// await proper thread shutdown
}
Also, my application is time-sensitive and I need to do some time measures. If I use sleep my results will be incorrect. So, please suggest an alternative way to get notified when all the threads finish without using sleep.
Thanks for your time on this
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net