summaryrefslogtreecommitdiffstats
path: root/library/std/src/sync/barrier.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/std/src/sync/barrier.rs')
-rw-r--r--library/std/src/sync/barrier.rs7
1 files changed, 2 insertions, 5 deletions
diff --git a/library/std/src/sync/barrier.rs b/library/std/src/sync/barrier.rs
index e39254aa4..ed3c55120 100644
--- a/library/std/src/sync/barrier.rs
+++ b/library/std/src/sync/barrier.rs
@@ -130,11 +130,8 @@ impl Barrier {
let local_gen = lock.generation_id;
lock.count += 1;
if lock.count < self.num_threads {
- // We need a while loop to guard against spurious wakeups.
- // https://en.wikipedia.org/wiki/Spurious_wakeup
- while local_gen == lock.generation_id {
- lock = self.cvar.wait(lock).unwrap();
- }
+ let _guard =
+ self.cvar.wait_while(lock, |state| local_gen == state.generation_id).unwrap();
BarrierWaitResult(false)
} else {
lock.count = 0;