Prevent threads from respawning during joining
Summary: Previously the thread pool might be non-empty after joining since concurrent submissions could spawn new threads. This problem didn't affect our background flush/compaction thread pools because the `shutting_down_` flag prevented new jobs from being submitted during/after joining. But I wanted to be able to reuse the `ThreadPool` without such external synchronization. Closes https://github.com/facebook/rocksdb/pull/2953 Differential Revision: D5951920 Pulled By: ajkr fbshipit-source-id: 0efec7d0056d36d1338367da75e8b0c089bbc973
This commit is contained in:
parent
821887036e
commit
5b2cb64bfb
@ -147,6 +147,9 @@ void ThreadPoolImpl::Impl::JoinThreads(bool wait_for_jobs_to_complete) {
|
||||
|
||||
wait_for_jobs_to_complete_ = wait_for_jobs_to_complete;
|
||||
exit_all_threads_ = true;
|
||||
// prevent threads from being recreated right after they're joined, in case
|
||||
// the user is concurrently submitting jobs.
|
||||
total_threads_limit_ = 0;
|
||||
|
||||
lock.unlock();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user