Boost logo

Boost Users :

Subject: Re: [Boost-users] [asio] multi-threaded io_service::run produce wrong result
From: Lars Viklund (zao_at_[hidden])
Date: 2011-03-28 14:40:48


On Mon, Mar 28, 2011 at 08:40:02PM +0800, leiming wrote:
> Hi, there.

An io_service will consider itself finished when there is no more
pending tasks to perform.

That means that if there is sufficient time between the first task and
the second task being posted, they may return from run() and end their
threads, resulting in the joins being completed.

If you want to keep an io_service alive while there are no pending
operations, construct an io_service::work object from the io_service.

That will keep io_service::run() running until all pending work is
finished (which you will indicate by destroying the work object.

-- 
Lars Viklund | zao_at_[hidden]

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