Always equal to recommendedBatchSize-1
.
Always equal to recommendedBatchSize-1
.
Provided for convenience.
Returns the next frame index in the run-loop.
Returns the next frame index in the run-loop.
If the returned integer is zero, then the next cycle in the run-loop should execute asynchronously.
Recommended batch size used for breaking synchronous loops in asynchronous batches.
Recommended batch size used for breaking synchronous loops in asynchronous batches. When streaming value from a producer to a synchronous consumer it's recommended to break the streaming in batches as to not hold the current thread or run-loop indefinitely.
This is rounded to the next power of 2, because then for applying the modulo operation we can just do:
val modulus = recommendedBatchSize - 1 // ... nr = (nr + 1) & modulus
For the JVM the default value can be adjusted with:
java -Dmonix.environment.batchSize=2048 \ ...
Specification for run-loops, imposed by the
Scheduler
.When executing tasks, a run-loop can always execute tasks asynchronously (by forking logical threads), or it can always execute them synchronously (same thread and call-stack, by using an internal trampoline), or it can do a mixed mode that executes tasks in batches before forking.
The specification is considered a recommendation for how run loops should behave, but ultimately it's up to the client to choose the best execution model. This can be related to recursive loops or to events pushed into consumers.