summaryrefslogtreecommitdiffstats
path: root/tokio/src/sync/semaphore.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tokio/src/sync/semaphore.rs')
-rw-r--r--tokio/src/sync/semaphore.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/tokio/src/sync/semaphore.rs b/tokio/src/sync/semaphore.rs
index 7721e01f..ec43bc52 100644
--- a/tokio/src/sync/semaphore.rs
+++ b/tokio/src/sync/semaphore.rs
@@ -60,9 +60,14 @@ impl Semaphore {
sem: &self,
ll_permit: ll::Permit::new(),
};
- poll_fn(|cx| permit.ll_permit.poll_acquire(cx, 1, &self.ll_sem))
- .await
- .unwrap();
+ poll_fn(|cx| {
+ // Keep track of task budget
+ ready!(crate::coop::poll_proceed(cx));
+
+ permit.ll_permit.poll_acquire(cx, 1, &self.ll_sem)
+ })
+ .await
+ .unwrap();
permit
}