Multi-watcher with round robin orchestrator #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.
What's new ?
Only one watcher go-routine was used previously running single kernel event loop, to which all accepted sockets were delegated to for their life-time. Now I'm experimenting with multiple watcher go-routines so that each can run its own kernel event loop, managing only a subset of all active sockets.
Accepted connection orchestration is currently done using fairly simple round robin technique. After collecting statistics of this version, I'll consider bringing in feedback loop in picture so that new connection listener go-routine can learn which watcher is doing how much work & make better, informed decision regarding where to delegate newly accepted connection to.
✌️