Improve efficiency of muted TCPConnection on non Windows platforms #1477
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.
Prior to this commit, if we were in TCPConnection's _pending_reads
and encountered discovered that the connection was muted, we would
call read_again to requeue another read and would then return.
This results in a lot of extra, unneeded work. Until the connection
is unmuted, there's no point to calling read_again, we'll just keep
repeating the same cycle over and over again; pointlessly putting
messages on the TCPConnection's queue.
With the commit, we now return from _pending_reads when discovering
that the connection is muted without calling read_again. Instead,
when we unmute the connection, we will then immediately call
_pending_reads to start processing any unhandled data.
There is probably a similar improvement that can be made on Windows,
however, I'm not a Windows programmer, barely know IOCP at all and
am more likely to break the Windows TCP implementation than I am
improve it therefore, this commit only applies to non Windows platforms.