diff options
| author | Nicolas Nattis <nicolas.nattis@gmail.com> | 2020-09-12 13:53:30 -0300 |
|---|---|---|
| committer | Nicolas Nattis <nicolas.nattis@gmail.com> | 2020-10-23 16:10:56 -0300 |
| commit | 929f80ece9d8875ef38dc45b4cfe372f263bc7c2 (patch) | |
| tree | a69fdb1eb2af671303222f1a9a144997b0997a29 /library/alloc/src/sync.rs | |
| parent | 07a63e6d1fabf3560e8e1e17c1d56b10a06152d9 (diff) | |
| download | rust-929f80ece9d8875ef38dc45b4cfe372f263bc7c2.tar.gz rust-929f80ece9d8875ef38dc45b4cfe372f263bc7c2.zip | |
Add a spin loop hint for Arc::downgrade
Diffstat (limited to 'library/alloc/src/sync.rs')
| -rw-r--r-- | library/alloc/src/sync.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/library/alloc/src/sync.rs b/library/alloc/src/sync.rs index 3a83aa7cbe5..cd18535b069 100644 --- a/library/alloc/src/sync.rs +++ b/library/alloc/src/sync.rs @@ -10,6 +10,7 @@ use core::cmp::Ordering; use core::convert::{From, TryFrom}; use core::fmt; use core::hash::{Hash, Hasher}; +use core::hint; use core::intrinsics::abort; use core::iter; use core::marker::{PhantomData, Unpin, Unsize}; @@ -764,6 +765,7 @@ impl<T: ?Sized> Arc<T> { loop { // check if the weak counter is currently "locked"; if so, spin. if cur == usize::MAX { + hint::spin_loop(); cur = this.inner().weak.load(Relaxed); continue; } |
