tur/scheduler
stdlib/scheduler.tur
cooperative fiber scheduler managing a fiber run queue.
Since: Phase T21
defn
scheduler-new
(scheduler-new :ptr<void>)
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 :ptr<void>)
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>] :nil)
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>] :nil)
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>] :nil)
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>] :nil)
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