Boost logo

Boost :

Subject: [boost] [asio] Question regarding io_service.post() and pool of threads
From: Romain CHANU (romainchanu_at_[hidden])
Date: 2010-09-27 23:18:22


Hi,

I was looking at this website where the guy gives an interesting example
about the use of a pool of threads and io_service.post():

http://mostlycoding.blogspot.com/2009/05/asio-library-has-been-immensely-helpful.html

However, something confuses me a bit, cf. the website "In just a bunch of
lines of code we have a thread pool executing any arbitrary task whenever
one thread is available. No need to address the usual multi-threading issues
with concurrent jobs sharing few resources: just post what you need and let
io_service take care of it!"

Extracted from Boost Asio reference: "The
io_service<http://www.boost.org/doc/libs/1_44_0/doc/html/boost_asio/reference/io_service.html>
guarantees
that the handler will only be called in a thread in which the run(), run_one
(), poll() or poll_one() member functions is currently being invoked."

For my understanding, since there is a pool of threads, a handler can run
concurrently in different threads, even though we are using
io_service.post().

Is that correct? My concern here is about the need or not to lock the data
accessed by the handler.

Thank you.

Regards,

Romain


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk