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.
the code is a rough draft and is mostly here to help the discussion in #7282
Motivation
in #7282 there was an idea to add an upgrade method to write locks.
I hope to achieve this without changing any existing code as it is a small feature
Solution
the key idea is that we can use compare_exchange to try and fish for specifically the situation where we have 1 reader and exchange the semiphore to 1 writer. this should be safe because of the invariant of compare_exchange