Always allocate notifiers for blocked senders #3
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.
Previous versions of tachyonix would cache the notifiers and their associated waker in the sender. While in theory this spares both on allocation and waker cloning, it appears to prevent some optimizations and actually results in worse performance across nearly all benchmarks and benchmark parameters.
So this is a "worse" version which appears to perform better and makes it possible to have the sender take
self
by shared reference rather than by mutable reference.Also, this commit removes the
UnsafeCell
around the waker, which was there only to enable tracking through loom but which turned out to have a non-negligible impact on performance.