rtic-sync: No need for c-s to check if link is in wait queue if link is popped #1042
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.
Minor improvement: if we insert our link into the wait queue, we always take a critical section (in the
OnDrop
) to ensure that it is no longer in the list on drop.However, if our link is popped, we know for a fact that it is not in the list.
take()
-ing it in the block that gets us into that state saves us an unnecessary critical section, which is probably the 2nd-most common scenario (the 1st being finding a free slot immediately).Additionally, we take a critical-section to check whether we still have an entry in our
SlotPtr
. However, once we are certain that ourlink
is removed from the list, we have exclusive access to it again: hence, we can skip that critical section too, on the happy path.