Updated set priority to yield if priority is lowered
This commit is contained in:
@@ -388,6 +388,19 @@ thread_set_priority (int new_priority)
|
||||
return;
|
||||
|
||||
thread_current ()->priority = new_priority;
|
||||
|
||||
if (new_priority < old_priority && !list_empty (&ready_list)) {
|
||||
/* If the new priority is lower than the old priority, check if the current
|
||||
thread no longer has the highest priority. If it doesn't, yield the CPU.
|
||||
*/
|
||||
|
||||
struct thread *next_thread =
|
||||
list_entry (list_front (&ready_list), struct thread, elem);
|
||||
|
||||
if (next_thread->priority > new_priority) {
|
||||
thread_yield();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns the current thread's priority. */
|
||||
|
||||
Reference in New Issue
Block a user