sync: use WakeList
in Notify
and batch_semaphore
#4071
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
PR #4055 added a new
WakeList
type, to manage a potentiallyuninitialized array when waking batches of wakers. This has the
advantage of not initializing a bunch of empty
Option
s when only asmall number of tasks are being woken, potentially improving performance
in these cases.
Currently,
WakeList
is used only in the IO driver. However,tokio::sync
contains some code that's almost identical to the code inthe IO driver that was replaced with
WakeList
, so we can apply thesame optimizations there.
Solution
This branch changes
tokio::sync::Notify
andtokio::sync::batch_semaphore::Semaphore
to useWakeList
when wakingbatches of wakers. This was a pretty straightforward drop-in
replacement.