Fix so that lock is not held while reactor is running.
diff --git a/asio/include/asio/detail/task_io_service.hpp b/asio/include/asio/detail/task_io_service.hpp index abe7b23..eb77c1d 100644 --- a/asio/include/asio/detail/task_io_service.hpp +++ b/asio/include/asio/detail/task_io_service.hpp
@@ -289,9 +289,7 @@ } task_has_run = true; - if (more_handlers) - wake_one_idle_thread_and_unlock(lock); - else + if (!more_handlers || !wake_one_idle_thread_and_unlock(lock)) lock.unlock(); op_queue<operation> completed_ops;