Don't attempt to wake tasks that aren't blocked.

It's possible for a supervised task to kill and wake its supervising
task then immediately try to wake it again if the supervising task
has joined the supervised. This is the easiest way to prevent that.
This commit is contained in:
Brian Anderson
2010-12-29 00:33:52 -05:00
committed by Graydon Hoare
parent 2ec4325fe9
commit 73fd87baf5
2 changed files with 37 additions and 1 deletions

View File

@@ -420,7 +420,7 @@ rust_task::notify_tasks_waiting_to_join() {
delete waiting_task;
} else {
rust_task *task = waiting_task->referent();
if (task->dead() == false) {
if (task->blocked() == true) {
task->wakeup(this);
}
}