* workqueue-internal.h (Workqueue_threader::should_cancel_thread):

Add thread_number parameter.
	(Workqueue_threader_threadpool::should_cancel_thread): Likewise.
	* workqueue-threads.cc
	(Workqueue_threader_threadpool::should_cancel_thread): Cancel
	current thread if its thread number is greater than desired thread
	count.
	* workqueue.cc (Workqueue_threader_single::should_cancel_thread):
	Add thread_number parameter.
	(Workqueue::should_cancel_thread): Likewise.
	(Workqueue::find_runnable_or_wait): Pass thread_number to
	should_cancel_thread.
	* workqueue.h (Workqueue::should_cancel_thread): Add thread_number
	parameter.
This commit is contained in:
Cary Coutant
2011-07-28 23:25:06 +00:00
parent a27e437177
commit dcd8d12e1c
5 changed files with 28 additions and 10 deletions

View File

@@ -110,7 +110,7 @@ class Workqueue_threader_single : public Workqueue_threader
{ gold_assert(thread_count > 0); }
bool
should_cancel_thread()
should_cancel_thread(int)
{ return false; }
};
@@ -202,9 +202,9 @@ Workqueue::queue_next(Task* t)
// Return whether to cancel the current thread.
inline bool
Workqueue::should_cancel_thread()
Workqueue::should_cancel_thread(int thread_number)
{
return this->threader_->should_cancel_thread();
return this->threader_->should_cancel_thread(thread_number);
}
// Find a runnable task in TASKS. Return NULL if none could be found.
@@ -264,7 +264,7 @@ Workqueue::find_runnable_or_wait(int thread_number)
return NULL;
}
if (this->should_cancel_thread())
if (this->should_cancel_thread(thread_number))
return NULL;
gold_debug(DEBUG_TASK, "%3d sleeping", thread_number);