diff options
| author | bors <bors@rust-lang.org> | 2021-11-26 16:30:42 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-11-26 16:30:42 +0000 |
| commit | 6d246f0c8d3063fea86abbb65a824362709541ba (patch) | |
| tree | 89367aa9a510b1c1dec9bd2151cf00c9182222f9 /library/std/src/sys | |
| parent | 454cc5fb86be180b3ec1138b6f2b480fbf3f1388 (diff) | |
| parent | a9710deebcfc0d24ea7b3510c9afa6afb40d2ae1 (diff) | |
| download | rust-6d246f0c8d3063fea86abbb65a824362709541ba.tar.gz rust-6d246f0c8d3063fea86abbb65a824362709541ba.zip | |
Auto merge of #91253 - matthiaskrgr:rollup-dnlcjmr, r=matthiaskrgr
Rollup of 4 pull requests Successful merges: - #91169 (Change cg_ssa's get_param to borrow the builder mutably) - #91176 (If the thread does not get the lock in the short term, yield the CPU) - #91212 (Fix ICE due to out-of-bounds statement index when reporting borrowck error) - #91225 (Fix invalid scrollbar display on source code page) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'library/std/src/sys')
| -rw-r--r-- | library/std/src/sys/hermit/mutex.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/library/std/src/sys/hermit/mutex.rs b/library/std/src/sys/hermit/mutex.rs index 691e7e07902..415cbba101c 100644 --- a/library/std/src/sys/hermit/mutex.rs +++ b/library/std/src/sys/hermit/mutex.rs @@ -46,8 +46,17 @@ impl<T> Spinlock<T> { #[inline] fn obtain_lock(&self) { let ticket = self.queue.fetch_add(1, Ordering::SeqCst) + 1; + let mut counter: u16 = 0; while self.dequeue.load(Ordering::SeqCst) != ticket { - hint::spin_loop(); + counter += 1; + if counter < 100 { + hint::spin_loop(); + } else { + counter = 0; + unsafe { + abi::yield_now(); + } + } } } |
