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;