diff --git a/async_grpc/completion_queue_pool.cc b/async_grpc/completion_queue_pool.cc index a32d0c0..580576d 100644 --- a/async_grpc/completion_queue_pool.cc +++ b/async_grpc/completion_queue_pool.cc @@ -38,7 +38,9 @@ void CompletionQueue::Shutdown() { CHECK(thread_) << "CompletionQueue not yet started."; LOG(INFO) << "Shutting down client completion queue " << this; completion_queue_.Shutdown(); - thread_->join(); + if (thread_->joinable()) { + thread_->join(); + } } void CompletionQueue::RunCompletionQueue() { diff --git a/async_grpc/completion_queue_thread.cc b/async_grpc/completion_queue_thread.cc index d900548..75e7fb5 100644 --- a/async_grpc/completion_queue_thread.cc +++ b/async_grpc/completion_queue_thread.cc @@ -38,7 +38,9 @@ void CompletionQueueThread::Start(CompletionQueueRunner runner) { void CompletionQueueThread::Shutdown() { LOG(INFO) << "Shutting down completion queue " << completion_queue_.get(); completion_queue_->Shutdown(); - worker_thread_->join(); + if (worker_thread_->joinable()) { + worker_thread_->join(); + } } } // namespace async_grpc diff --git a/async_grpc/event_queue_thread.cc b/async_grpc/event_queue_thread.cc index d13f117..f46c1e8 100644 --- a/async_grpc/event_queue_thread.cc +++ b/async_grpc/event_queue_thread.cc @@ -36,7 +36,9 @@ void EventQueueThread::Start(EventQueueRunner runner) { void EventQueueThread::Shutdown() { LOG(INFO) << "Shutting down event queue " << event_queue_.get(); - thread_->join(); + if (thread_->joinable()) { + thread_->join(); + } } } // namespace async_grpc