Boost logo

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