Re: [boost] asio & variable number of worker threads

Hi Chris, Chris Richards <chris.richards@yellowfeather.co.uk> wrote: [...]
What happens is that the expection is caught in one thread, and that thread exits gracefully, but also the handler for the async_accpet is called with an error stating "The I/O operation has been aborted because of either a thread exit or an application request.", causing that thread to exit as well.
Yep, that's the way it works on Windows. Overlapped I/O operations are tied to the thread that starts them, and so if that thread exits the operations are cancelled. The effect of thread-exit on asynchronous operations is deliberately specified as "implementation-defined" in asio for this reason. For portability you'll probably have to look at a different way of structuring it, e.g. an io_service with a fixed sized pool for handling I/O operations, plus an additional io_service with a variable pool for handling CPU intensive tasks. BTW, in CVS the io_service now has member functions run_one(), poll() and poll_one() in addition to run(). These might offer you an alternative way of controlling how many threads are in the pool. Cheers, Chris
participants (1)
-
Christopher Kohlhoff