-
Notifications
You must be signed in to change notification settings - Fork 32
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
Replace the half-lock with helping strategy #50
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Because we want it aligned.
And early, guarding from a „wrong“ pointer from getting in.
And preparing for merging with the debts for the helping strategy.
The helping strategy now shares the nodes (not the slots).
The default is now Hybrid<Helping>, which has overall better properties. More refactoring needed.
The file is still left there with the documentation; documentation, comments and such still need to get ported.
According to benchmarks, it's doing a better job of it anyway.
We are allowed to do it in two operations and it's faster that way.
The pointer is passed through an indirection "box" thing and these are forced to be aligned.
Emulating them being full by a fake strategy. Fixing releasing stuff.
Seems like minor perf improvements
Going over all the new synchronization and trying to prove it is correct.
So we can see the values more easily.
Codecov Report
@@ Coverage Diff @@
## master #50 +/- ##
==========================================
+ Coverage 89.02% 89.93% +0.91%
==========================================
Files 15 15
Lines 1157 984 -173
==========================================
- Hits 1030 885 -145
+ Misses 127 99 -28
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This makes all the write operations lock-free too.
Also, as the helping strategy is based on that article in #34, that one probably can be closed too. And currently we also have some almost formal arguments about why things are correct.
Closes #8, #34 and #4.