Jelajahi Sumber

Make semaphore always sched_yield

Jeremy Soller 2 tahun lalu
induk
melakukan
e7b6252bd3
1 mengubah file dengan 2 tambahan dan 1 penghapusan
  1. 2 1
      src/sync/semaphore.rs

+ 2 - 1
src/sync/semaphore.rs

@@ -29,7 +29,8 @@ impl Semaphore {
         }
         }
         loop {
         loop {
             while self.lock.load(Ordering::Acquire) < 1 {
             while self.lock.load(Ordering::Acquire) < 1 {
-                spin_loop();
+                //spin_loop();
+                Sys::sched_yield();
             }
             }
             let tmp = self.lock.fetch_sub(1, Ordering::AcqRel);
             let tmp = self.lock.fetch_sub(1, Ordering::AcqRel);
             if tmp >= 1 {
             if tmp >= 1 {