[Thread] io_service post is unsuccessful

I'm trying to figure out why a call to boost::io_service::post might be
failing. My program is multithreaded, and has a periodic "timing event" that
is triggered. The timing event calls "Service.post(&OnSignal);" to execute a
handler, while another thread runs the service. Using this design, I can
post an event from any thread without worrying about explicit resource
locking.
My question is, why does my call to Service.post always fail? I know it is
failing because the function that I post never gets called. There is not
explicit return code or thrown exception to indicate that there is a
problem.
Below is an example of what I'm trying to do. Inside main(), there is a
commented call to "Service.post(&OnSignal);". Uncommenting that line results
in a successful post to the Service, which eventually calls OnSignal, (but
only once, obviously). Why does that call work, but not the call in
TimingSignalThread()?
#include <iostream>
#include

Dylan Klomparens wrote:
My question is, why does my call to Service.post always fail? I know it is failing because the function that I post never gets called. There is not explicit return code or thrown exception to indicate that there is a problem.
An io_service keeps running as long as it has work to do. You can force an io_service to keep running by attaching a work object. Try adding boost::asio::io_service::work work(Service); just below main, before the call to Service.run(). Cheers, Rutger

Rutger,
I didn't know it would exit when it ran out of work. Your solution worked
perfectly! I added that line and Service.run() no longer exits prematurely.
Thanks for your insight!
-- Dylan
For anyone who might try to do something similar in the future, here is the
complete code listing that works properly.
#include <iostream>
#include
Dylan Klomparens wrote:
My question is, why does my call to Service.post always fail? I know it is failing because the function that I post never gets called. There is not explicit return code or thrown exception to indicate that there is a problem.
An io_service keeps running as long as it has work to do. You can force an io_service to keep running by attaching a work object. Try adding
boost::asio::io_service::work work(Service);
just below main, before the call to Service.run().
Cheers,
Rutger
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Dylan Klomparens
-
Rutger ter Borg