Better fix for ThreadIdGuard destroy after exit.
This commit is contained in:
parent
4b687582c1
commit
a093d36b3f
|
@ -28,9 +28,6 @@ class ThreadIdManager {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
void unregister_thread(int32 thread_id) {
|
void unregister_thread(int32 thread_id) {
|
||||||
if (ExitGuard::is_exited()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
std::lock_guard<std::mutex> guard(mutex_);
|
std::lock_guard<std::mutex> guard(mutex_);
|
||||||
CHECK(0 < thread_id && thread_id <= max_thread_id_);
|
CHECK(0 < thread_id && thread_id <= max_thread_id_);
|
||||||
bool is_inserted = unused_thread_ids_.insert(thread_id).second;
|
bool is_inserted = unused_thread_ids_.insert(thread_id).second;
|
||||||
|
@ -50,7 +47,9 @@ ThreadIdGuard::ThreadIdGuard() {
|
||||||
set_thread_id(thread_id_);
|
set_thread_id(thread_id_);
|
||||||
}
|
}
|
||||||
ThreadIdGuard::~ThreadIdGuard() {
|
ThreadIdGuard::~ThreadIdGuard() {
|
||||||
thread_id_manager.unregister_thread(thread_id_);
|
if (!ExitGuard::is_exited()) {
|
||||||
|
thread_id_manager.unregister_thread(thread_id_);
|
||||||
|
}
|
||||||
set_thread_id(0);
|
set_thread_id(0);
|
||||||
}
|
}
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
Loading…
Reference in New Issue
Block a user