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.

n_threadsnumber 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.

schedscheduler 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.

schedscheduler pointer returned by scheduler-mt-new
fiberfiber 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.

schedscheduler 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.

schedscheduler 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.

fiberfiber pointer that was previously parked via scheduler-mt-park

Since: Phase T23