diff --git a/src/threadloop.cpp b/src/threadloop.cpp index 1f95bb67c91d3da7c0645e095f244cb0694d6b8f..75c4cd729727e3d37de7a308fbb09fced115c337 100644 --- a/src/threadloop.cpp +++ b/src/threadloop.cpp @@ -110,7 +110,15 @@ ThreadLoop::join() thread_.join(); } -void ThreadLoop::exit() +void +ThreadLoop::waitForCompletion() +{ + if (thread_.joinable()) + thread_.join(); +} + +void +ThreadLoop::exit() { stop(); throw ThreadLoopException(); diff --git a/src/threadloop.h b/src/threadloop.h index 33d6bf8ea6c0c36f4be362f07f9668d32a5e34ef..ff6d6111b0938e2faa522aaaab62b22d906498b3 100644 --- a/src/threadloop.h +++ b/src/threadloop.h @@ -55,6 +55,7 @@ public: void exit(); virtual void stop(); void join(); + void waitForCompletion(); // thread will stop itself bool isRunning() const noexcept; bool isStopping() const noexcept;