On Saturday, 12 July 2014 11:10 AM, "boost-users-owner@lists.boost.org" <boost-users-owner@lists.boost.org> wrote:


----- Forwarded Message -----

To post messages to the Boost Users mailing list, you will need to
subscribe this e-mail address via the Boost mailing list web page at:

  http://lists.boost.org/mailman/listinfo.cgi/boost-users

You will need to take this step even if you intend to post only
through GMane or some other news gateway. In this case, you may wish
to edit your subscription options to turn off mail delivery.



On Friday, 11 July 2014 11:00 PM, imran sheikh <s.imran0508@yahoo.com> wrote:


hi all,
i am using boost::asio:: ioservice  for the multi-threading in c++. i got stuck ...please see and help.
code is like this,

discription:
> i am creating threadpool using ioservice.
> creating threads 100.
> in while (which is 5 times)loop at a time i want to post(posting at do work) 5 threads.
> then i do work reset and like this..
>i print thread-id also

problems::

>threadpool size is 100.
> but at a posting time it didn't taking the 5 threads..when i printed a id its same for 5 thread
> so its not executing in parallel..why?
> i want to post five threads at a time(different threads means thread id is different  must)..from threapool..and like this for whole while loop rotation..??????????????????????????

void dowork(int i)
{
std::cout<<"hello"<<std::endl;
cout<<" thread ID :"<<boost::this_thread::get_id();
}


int main()
{
int ch;
int i;
boost::asio::io_service ioservice;
boost::thread_group threadpool;
auto_ptr<boost::asio::io_service::work> work(new boost::asio::io_service::work(ioservice));
for(i=0;i<100;i++)
{
threadpool.create_thread( boost::bind(&boost::asio::io_service::run, &ioservice));
}
        ch=0;
        while(ch <= 5)
        {
                ch++;
                cout<<"in main"<<boost::this_thread::get_id()<<endl;
                                for(i=0;i<5;i++)
                                {
                                ioservice.post(boost::bind(dowork,10));
                                }
                std::cout<<"size="<<threadpool.size()<<std::endl;
                work.reset();
               ioservice.reset();
                ioservice.run();
    }
}

please give me suggestion.i got stuck with it.