I had to implement an external loop to check for free slots (this causes a certain delay but doesn't explain delays of 500ms)
the task does a kind of busy waiting (checking if it's allowed to continue). This keeps the async event loop busy (guessing). I think the major delay comes from this waiting loop.
I will try to implement something more nio4r compatible (I'm currently thinking of named pipes and reading to "pause" a task and write to "resume" a task). But perhaps a "pause"/"resume" could be implemented into the framework. currently a task can only be "stopped" and that's it.
I implemented a naive pushback example (https://github.com/socketry/falcon/tree/main/examples/pushback) but it has some quirks:
I will try to implement something more nio4r compatible (I'm currently thinking of named pipes and reading to "pause" a task and write to "resume" a task). But perhaps a "pause"/"resume" could be implemented into the framework. currently a task can only be "stopped" and that's it.