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] :ptr<void>)

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>] :nil)

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 :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
(scheduler-mt-spawn sched my-fiber)

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
(scheduler-mt-run sched)

Since: Phase T23

defn

scheduler-mt-thread-id

(scheduler-mt-thread-id :int)

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>] :nil)

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 :ptr<void>)

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 :nil)

yield the current fiber so other fibers may be scheduled.

(scheduler-mt-yield)

Since: Phase T23

defn

scheduler-mt-park

(scheduler-mt-park :nil)

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 :ptr<void>] :nil)

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