tur/scheduler_mt
stdlib/scheduler_mt.tur
defn
scheduler-mt-new
(scheduler-mt-new [n_threads :int] :ptr<void>)
create a new multi-threaded work-stealing scheduler.
Parameters
| n_threads | number of OS worker threads to spawn |
Since: Phase T23
defn
scheduler-mt-free
(scheduler-mt-free [sched :ptr<void>] :nil)
free a multi-threaded scheduler after all threads have finished.
Parameters
| sched | scheduler pointer returned by scheduler-mt-new |
Since: Phase T23
defn
scheduler-mt-spawn
(scheduler-mt-spawn [sched :ptr<void> fiber :ptr<void>] :nil)
add a fiber to the multi-threaded scheduler's work queue.
Parameters
| sched | scheduler pointer returned by scheduler-mt-new | |
| fiber | fiber pointer to enqueue for execution |
Since: Phase T23
defn
scheduler-mt-run
(scheduler-mt-run [sched :ptr<void>] :nil)
run the multi-threaded scheduler on the calling thread.
Parameters
| sched | scheduler pointer returned by scheduler-mt-new |
Since: Phase T23
defn
scheduler-mt-thread-id
(scheduler-mt-thread-id :int)
return the unique integer ID of the current OS thread.
Since: Phase T23
defn
scheduler-mt-set-current
(scheduler-mt-set-current [sched :ptr<void>] :nil)
set the active scheduler for the current thread.
Parameters
| sched | scheduler pointer to install as the current thread's scheduler |
Since: Phase T23
defn
scheduler-mt-current
(scheduler-mt-current :ptr<void>)
return the scheduler currently associated with this thread.
Since: Phase T23
defn
scheduler-mt-yield
(scheduler-mt-yield :nil)
yield the current fiber so other fibers may be scheduled.
Since: Phase T23
defn
scheduler-mt-park
(scheduler-mt-park :nil)
park the current fiber until another fiber calls scheduler-mt-unpark.
Since: Phase T23
defn
scheduler-mt-unpark
(scheduler-mt-unpark [fiber :ptr<void>] :nil)
unpark a previously parked fiber, making it eligible to run.
Parameters
| fiber | fiber pointer that was previously parked via scheduler-mt-park |
Since: Phase T23