// workqueue-threads.cc -- the threaded workqueue for gold
-// Copyright 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007-2020 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
// Return whether the current thread should be cancelled.
bool
-Workqueue_threader_threadpool::should_cancel_thread()
+Workqueue_threader_threadpool::should_cancel_thread(int thread_number)
{
// Fast exit without taking a lock.
if (!this->check_thread_count_)
{
Hold_lock hl(this->lock_);
- if (this->threads_ > this->desired_thread_count_)
+ if (thread_number > this->desired_thread_count_)
{
--this->threads_;
+ if (this->threads_ <= this->desired_thread_count_)
+ this->check_thread_count_ = 0;
return true;
}
- this->check_thread_count_ = 0;
}
return false;