role Scheduler

Scheme for automatically assigning tasks to threads

role Scheduler {
    has &.uncaught_handler is rw

Common role for schedulers. A scheduler is a piece of code that determines which resources to use to run which task, and when.

Some operations for example on Proc::Async, Promise, Supply allow you to specify a scheduler explicitly; they generally expect those schedulers to follow the interface defined by Scheduler


method uncaught_handler

method uncaught_handler() is rw

RW-Accessor for the handler that is caught for uncaught exceptions from the code that is being scheduled and run.

method cue

method cue(&codeInstant :$at:$in:$every:$times = 1:&catch --> Cancellation)

Schedules a callable (&code) for execution and returns an instantiated Cancellation object to cancel the scheduling of the code for execution (which is especially important if you specify the every = time> named parameter. The adverbs control when and how the code is run:

$at can be an Instant before which the code won't be run. Alternatively $in is the number of seconds (possibly fractional) to wait before running the code. If $at is in the past or $in is negative, the delay is treated as zero. Implementations may equate to zero very small values (e.g. lower than 0.001s) of $in or result of $at - now.

If $every is specified, it is interpreted as the number of seconds (possibly fractional) to wait before re-executing the code. Implementations may treat too-small values as lowest resolution they support, possibly warning in such situations; e.g. treating 0.0001 as 0.001.

$times tells the scheduler how many times to run the code.

&catch is called with the Exception as its sole argument if &code dies.

One should call the cancel method on the returned Cancellation object to cancel the (possibly repeated) cueing of the code.

Type Graph

Type relations for Scheduler
perl6-type-graph Scheduler Scheduler Mu Mu Any Any Any->Mu CurrentThreadScheduler CurrentThreadScheduler CurrentThreadScheduler->Scheduler CurrentThreadScheduler->Any ThreadPoolScheduler ThreadPoolScheduler ThreadPoolScheduler->Scheduler ThreadPoolScheduler->Any

Expand above chart