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