
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 <boost/asio.hpp> #include <boost/thread/thread.hpp> using namespace std; boost::asio::io_service Service; void OnSignal() { cout << "Got timing signal" << endl; } void TimingSignalThread() { boost::this_thread::disable_interruption di; while(!boost::this_thread::interruption_requested()) { boost::this_thread::sleep(boost::posix_time::millisec(500)); Service.post(&OnSignal); } } void ServiceRunner() { *boost::asio::io_service::work RunForever(Service);* Service.run(); } int main() { boost::thread TimingThread(&TimingSignalThread); boost::thread ServiceThread(&ServiceRunner); cin.get(); TimingThread.interrupt(); TimingThread.join(); Service.stop(); ServiceThread.join(); cout << "Joined all threads." << endl; return 0; } On Wed, Oct 28, 2009 at 4:42 PM, Rutger ter Borg <rutger@terborg.net> wrote:
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