Kernel: remove object's waiting thread if it is dead

master
wwylele 2016-12-16 12:33:18 +07:00
parent cda7210fad
commit 4c9b80cee3
1 changed files with 2 additions and 1 deletions

@ -35,7 +35,8 @@ void WaitObject::RemoveWaitingThread(Thread* thread) {
SharedPtr<Thread> WaitObject::GetHighestPriorityReadyThread() {
// Remove the threads that are ready or already running from our waitlist
boost::range::remove_erase_if(waiting_threads, [](const SharedPtr<Thread>& thread) {
return thread->status == THREADSTATUS_RUNNING || thread->status == THREADSTATUS_READY;
return thread->status == THREADSTATUS_RUNNING || thread->status == THREADSTATUS_READY ||
thread->status == THREADSTATUS_DEAD;
});
// TODO(Subv): This call should be performed inside the loop below to check if an object can be