tur/scheduler
stdlib/scheduler.tur
cooperative fiber scheduler managing a fiber run queue.
Since: Phase T21
defn
scheduler-new
(scheduler-new :)
create a new cooperative fiber scheduler.
Returns
ptr<void> -- the newly allocated scheduler; panics if one already exists
Example
(scheduler-new) ; => sched-ptr
Since: Phase T21
defn
scheduler-current
(scheduler-current :)
return the current global scheduler pointer.
Returns
ptr<void> -- the active scheduler, or nil if none has been created
Example
(scheduler-current) ; => sched-ptr
Since: Phase T21
defn
scheduler-spawn
(scheduler-spawn [sched ptr<void> f ptr<void>] :)
add a fiber to the scheduler's ready queue.
Parameters
| sched | scheduler pointer returned by scheduler-new | |
| f | fiber pointer to enqueue |
Example
(scheduler-spawn sched my-fiber)
Since: Phase T21
defn
scheduler-run
(scheduler-run [sched ptr<void>] :)
run the scheduler event loop until the ready queue is empty.
Parameters
| sched | scheduler pointer returned by scheduler-new |
Example
(scheduler-run sched)
Since: Phase T21
defn
scheduler-run-to-completion
(scheduler-run-to-completion [sched ptr<void>] :)
run the scheduler until all spawned fibers have finished.
Parameters
| sched | scheduler pointer returned by scheduler-new |
Example
(scheduler-run-to-completion sched)
Since: Phase T21
defn
scheduler-timeout
(scheduler-timeout [ms : int cb ptr<void> arg ptr<void>] :)
schedule a callback to be called after a delay in milliseconds.
Parameters
| ms | delay in milliseconds before invoking the callback | |
| cb | function pointer to invoke; receives arg as its sole argument | |
| arg | opaque pointer passed through to the callback |
Example
(scheduler-timeout 500 my-cb my-data)
Since: Phase T21