$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
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