-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fast and scalable channels algorithm #3621
Comments
This issue is also a final straw for the |
After #3084 our performance-related outline is the following:
It seems like we have no other low-hangning fruits in channels. |
Also, a customized |
In #3103 we propose a brand new underlying data structure for channels.
The change is technical and should not affect user-visible invariants, behaviour and API shape.
The full-blown algorithm description and correctness proof can be found here: https://arxiv.org/abs/2211.04986
The rework addresses the following problems:
Additionally, it's well-known that array-based data structures significantly outperform linked structures, while fetch-and-add algorithms outperform CAS-based ones. Both of these facts are acknowledged by the new implementation:
CancellableContinuationImpl.invokeOnCancellation(..)
forSegment
s #3084 that will enable fast-path allocation-free channelsThe text was updated successfully, but these errors were encountered: