diff --git a/repertory/librepertory/src/utils/tasks.cpp b/repertory/librepertory/src/utils/tasks.cpp index 7d6bc166..63517955 100644 --- a/repertory/librepertory/src/utils/tasks.cpp +++ b/repertory/librepertory/src/utils/tasks.cpp @@ -100,15 +100,16 @@ void tasks::stop() { stop_requested_ = true; unique_mutex_lock lock(mutex_); + std::vector> threads; + std::swap(threads, task_threads_); + + std::deque tasks; + std::swap(tasks, tasks_); notify_.notify_all(); lock.unlock(); - task_threads_.clear(); - - lock.lock(); - tasks_.clear(); - notify_.notify_all(); - lock.unlock(); + threads.clear(); + tasks.clear(); } void tasks::task_thread() {