diff --git a/src/threads/thread.c b/src/threads/thread.c index 7366641..f364679 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -389,6 +389,8 @@ thread_set_priority (int new_priority) thread_current ()->priority = new_priority; + enum intr_level old_level = intr_disable (); + 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. @@ -401,6 +403,8 @@ thread_set_priority (int new_priority) thread_yield(); } } + + intr_set_level (old_level); } /* Returns the current thread's priority. */