]> git.lizzy.rs Git - rust.git/commitdiff
remove extra spinning from `mpsc::Receiver::recv`
authorIbraheem Ahmed <ibraheem@ibraheem.ca>
Mon, 17 Oct 2022 23:17:10 +0000 (19:17 -0400)
committerIbraheem Ahmed <ibraheem@ibraheem.ca>
Thu, 10 Nov 2022 04:20:02 +0000 (23:20 -0500)
library/std/src/sync/mpmc/array.rs
library/std/src/sync/mpmc/list.rs

index 74bc53d549d2cd4bca7453ce5b5ddb680395746d..dfa477021031a7c3020228d99f1da6aef25b77d2 100644 (file)
@@ -379,19 +379,9 @@ pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> {
     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 {
index 5bc196995b14e74c3e27d7ac13e7ae93e33669bf..4761125e483f8d9a2dc189ba28705a0e4ee7f43b 100644 (file)
@@ -418,19 +418,9 @@ pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> {
     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) {
-                    unsafe {
-                        return self.read(token).map_err(|_| RecvTimeoutError::Disconnected);
-                    }
-                }
-
-                if backoff.is_completed() {
-                    break;
-                } else {
-                    backoff.snooze();
+            if self.start_recv(token) {
+                unsafe {
+                    return self.read(token).map_err(|_| RecvTimeoutError::Disconnected);
                 }
             }