about summary refs log tree commit diff
path: root/library/alloc/src/sync.rs
diff options
context:
space:
mode:
authorNicolas Nattis <nicolas.nattis@gmail.com>2020-09-12 13:53:30 -0300
committerNicolas Nattis <nicolas.nattis@gmail.com>2020-10-23 16:10:56 -0300
commit929f80ece9d8875ef38dc45b4cfe372f263bc7c2 (patch)
treea69fdb1eb2af671303222f1a9a144997b0997a29 /library/alloc/src/sync.rs
parent07a63e6d1fabf3560e8e1e17c1d56b10a06152d9 (diff)
downloadrust-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.rs2
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;
             }