diff options
Diffstat (limited to 'tokio/src/sync/semaphore.rs')
-rw-r--r-- | tokio/src/sync/semaphore.rs | 11 |
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 } |