about summary refs log tree commit diff
path: root/library/std/src/sync/mpmc/array.rs
diff options
context:
space:
mode:
authorIbraheem Ahmed <ibraheem@ibraheem.ca>2022-10-17 19:17:10 -0400
committerIbraheem Ahmed <ibraheem@ibraheem.ca>2022-11-09 23:20:02 -0500
commit8c17a3e7cb0717fbc849f2a8250e8f5b88a1a3c7 (patch)
tree3e48af96260ed735a310bea2f9b6de462db2093d /library/std/src/sync/mpmc/array.rs
parentcb394c026a1645d5511c987006ef190755289451 (diff)
downloadrust-8c17a3e7cb0717fbc849f2a8250e8f5b88a1a3c7.tar.gz
rust-8c17a3e7cb0717fbc849f2a8250e8f5b88a1a3c7.zip
remove extra spinning from `mpsc::Receiver::recv`
Diffstat (limited to 'library/std/src/sync/mpmc/array.rs')
-rw-r--r--library/std/src/sync/mpmc/array.rs16
1 files changed, 3 insertions, 13 deletions
diff --git a/library/std/src/sync/mpmc/array.rs b/library/std/src/sync/mpmc/array.rs
index 74bc53d549d..dfa47702103 100644
--- a/library/std/src/sync/mpmc/array.rs
+++ b/library/std/src/sync/mpmc/array.rs
@@ -379,19 +379,9 @@ impl<T> Channel<T> {
     pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> {
         let token = &mut Token::default();
         loop {
-            // Try receiving a message several times.
-            let backoff = Backoff::new();
-            loop {
-                if self.start_recv(token) {
-                    let res = unsafe { self.read(token) };
-                    return res.map_err(|_| RecvTimeoutError::Disconnected);
-                }
-
-                if backoff.is_completed() {
-                    break;
-                } else {
-                    backoff.snooze();
-                }
+            if self.start_recv(token) {
+                let res = unsafe { self.read(token) };
+                return res.map_err(|_| RecvTimeoutError::Disconnected);
             }
 
             if let Some(d) = deadline {