No matching definitions.

tur/scheduler_mt

stdlib/scheduler_mt.tur

multi-threaded work-stealing scheduler for parallel fibers.

Since: Phase T23

defn

scheduler-mt-new

(scheduler-mt-new [n_threads : int] :)

create a new multi-threaded work-stealing scheduler.

n_threadsnumber of OS worker threads to spawn

ptr<void> -- the newly allocated scheduler; aborts on allocation failure

(scheduler-mt-new 4)  ; => sched-ptr

Since: Phase T23

defn

scheduler-mt-free

(scheduler-mt-free [sched ptr<void>] :)

free a multi-threaded scheduler after all threads have finished.

schedscheduler pointer returned by scheduler-mt-new
(scheduler-mt-free sched)

Since: Phase T23

defn

scheduler-mt-spawn

(scheduler-mt-spawn [sched ptr<void> fiber : FiberHandle] :)

add a fiber to the multi-threaded scheduler's work queue.

schedscheduler pointer returned by scheduler-mt-new
fiberfiber pointer to enqueue for execution
(scheduler-mt-spawn sched my-fiber)

Since: Phase T23

defn

scheduler-mt-run

(scheduler-mt-run [sched ptr<void>] :)

run the multi-threaded scheduler on the calling thread.

schedscheduler pointer returned by scheduler-mt-new
(scheduler-mt-run sched)

Since: Phase T23

defn

scheduler-mt-thread-id

(scheduler-mt-thread-id :)

return the unique integer ID of the current OS thread.

int -- a non-negative thread ID unique within the scheduler

(scheduler-mt-thread-id)  ; => non-deterministic thread ID

Since: Phase T23

defn

scheduler-mt-set-current

(scheduler-mt-set-current [sched ptr<void>] :)

set the active scheduler for the current thread.

schedscheduler pointer to install as the current thread's scheduler
(scheduler-mt-set-current sched)

Since: Phase T23

defn

scheduler-mt-current

(scheduler-mt-current :)

return the scheduler currently associated with this thread.

ptr<void> -- the active scheduler for this thread, or nil if none set

(scheduler-mt-current)  ; => sched-ptr

Since: Phase T23

defn

scheduler-mt-yield

(scheduler-mt-yield :)

yield the current fiber so other fibers may be scheduled.

(scheduler-mt-yield)

Since: Phase T23

defn

scheduler-mt-park

(scheduler-mt-park :)

park the current fiber until another fiber calls scheduler-mt-unpark.

(scheduler-mt-park)

Since: Phase T23

defn

scheduler-mt-unpark

(scheduler-mt-unpark [fiber : FiberHandle] :)

unpark a previously parked fiber, making it eligible to run.

fiberfiber pointer that was previously parked via scheduler-mt-park
(scheduler-mt-unpark other-fiber)

Since: Phase T23