sync: improve the docs for recv_many
#7201
Open
+25
−12
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.
Trying to explain a bit better when
recv_many
will return and why in some cases the returned number of received messages is below the input parameterlimit
.Motivation
I stumbled upon
recv_many
for the first time ever in a bit of code while reviewing a PR. I took some issue with how the function was called (inside awhile
loop) and had a look at the docs to understand why that would be necessary. When reading through the docs it seemed to me as if there was seemingly no need for a loop becauserecv_many
would apparently wait for new messages if none were available, only returning when thelimit
would be reached or the channel would be closed. I gave this a try in a smaller code example and had to realize that this was not the case. Looking at the source I found thatrecv_many
would only wait for the first message, but would return early if the channel queue had no messages available after that, even when not being closed. At this point I felt that the docs were a bit unclear in that regard.Solution
By describing the behavior a bit more explicitly I am hoping to improve the docs and avoid misunderstandings like mine in the future.