sync: add split
method to the permit types
#6472
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.
Add
detach
method toSemaphorePermit
andOwnedSemaphorePermit
.Motivation
Assume there are two tasks named
A
andB
, and we have aSemaphore
with two permits.A
needs one permit,B
needs two permits at first and one permit later.If
B
executes first, it callsacquire_many
to get aSemaphorePermit
with two permits. After doing some work, one of the permits is unnecessary forB
to continue the work, but we can only release all permits at once.In this case,
A
has to wait untilB
finishes all works orB
releases its two permits and acquires one permit again to continue the remaining work without blockingA
.Since we have the
merge
method, I believe that the corresponding inverse operation is reasonable.Solution
Adds the
detach
method toSemaphorePermit
andOwnedSemaphorePermit
to allow us to detach some permits from the source permits.