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.
This is the next chapter of the book of AI, see #4209
To eventually get to event driven, asynchronous IO where a smaller number of threads handles a large number of requests, we also need a way to disembark a request from a worker and have another thread pick up where it left of, then reentering the state machine later to finish off.
Thanks to the already existing disembark facility used for waitinglist wakeups, implementing this is pretty straight forward: We basically only need to allow the vtr_deliver_f (transport deliver function) to tell the state engine to disembark, add a "finish" state, and everything else more or less works out of the box.
The last commit has a demonstration in a test case.
Everything else in this patch is refactoring.