Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78739 - in trunk: boost/asio/detail/impl libs/asio/doc
From: chris_at_[hidden]
Date: 2012-05-28 18:03:37


Author: chris_kohlhoff
Date: 2012-05-28 18:03:36 EDT (Mon, 28 May 2012)
New Revision: 78739
URL: http://svn.boost.org/trac/boost/changeset/78739

Log:
Use the thread's private_op_queue for handlers returned by the reactor task.
This fixes a problem where signal_set handlers are not being called when the
io_service's concurrency hint is set to 1. Refs #6657.

Text files modified:
   trunk/boost/asio/detail/impl/task_io_service.ipp | 10 ++++------
   trunk/libs/asio/doc/history.qbk | 3 +++
   2 files changed, 7 insertions(+), 6 deletions(-)

Modified: trunk/boost/asio/detail/impl/task_io_service.ipp
==============================================================================
--- trunk/boost/asio/detail/impl/task_io_service.ipp (original)
+++ trunk/boost/asio/detail/impl/task_io_service.ipp 2012-05-28 18:03:36 EDT (Mon, 28 May 2012)
@@ -369,14 +369,13 @@
         else
           lock.unlock();
 
- op_queue<operation> completed_ops;
- task_cleanup on_exit = { this, &lock, &completed_ops };
+ task_cleanup on_exit = { this, &lock, &private_op_queue };
         (void)on_exit;
 
         // Run the task. May throw an exception. Only block if the operation
         // queue is empty and we're not polling, otherwise we want to return
         // as soon as possible.
- task_->run(!more_handlers, completed_ops);
+ task_->run(!more_handlers, private_op_queue);
       }
       else
       {
@@ -423,14 +422,13 @@
     lock.unlock();
 
     {
- op_queue<operation> completed_ops;
- task_cleanup c = { this, &lock, &completed_ops };
+ task_cleanup c = { this, &lock, &private_op_queue };
       (void)c;
 
       // Run the task. May throw an exception. Only block if the operation
       // queue is empty and we're not polling, otherwise we want to return
       // as soon as possible.
- task_->run(false, completed_ops);
+ task_->run(false, private_op_queue);
     }
 
     o = op_queue_.front();

Modified: trunk/libs/asio/doc/history.qbk
==============================================================================
--- trunk/libs/asio/doc/history.qbk (original)
+++ trunk/libs/asio/doc/history.qbk 2012-05-28 18:03:36 EDT (Mon, 28 May 2012)
@@ -20,6 +20,9 @@
 * Improved the performance of strand rescheduling.
 * Added support for [^g++] 4.7 when compiling in C++11 mode
   ([@https://svn.boost.org/trac/boost/ticket/6620 #6620]).
+* Fixed a problem where `signal_set` handlers were not being delivered when
+ the `io_service` was constructed with a `concurrency_hint` of 1
+ ([@https://svn.boost.org/trac/boost/ticket/6657 #6657]).
 
 [heading Asio 1.8.0 / Boost 1.49]
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk