Reuse unresolved futures in select-in-loop #8
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.
When waiting for multiple futures in select inside a loop, we want to reset only a future that got resolved in that loop iteration and let the other futures in their current state.
Failing to do so can lead to data loss, e.g. when a FrameReader is in the middle of receiving a frame and a timeout future gets resolved first, calling
frame_reader.receive_frame()
in next loop iteration will cause that the frame being received so far gets lost and the frame_reader will start receiving new frame.