class CurrentThreadScheduler

Scheduler that synchronously executes code on the current thread

class CurrentThreadScheduler does Scheduler {}

CurrentThreadScheduler executes tasks on the current threads. This means that method cue blocks until the code has finished executing.

Type Graph

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

Expand above chart

Routines supplied by role Scheduler

CurrentThreadScheduler does role Scheduler, which provides the following routines:

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

(Scheduler) 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.

  • If $at or $in are Inf, &code will never be run; if $every is Inf, &code will only be run once. If any of the three are -Inf, &code will be run immediately. If any of the three are NaN, an X::Scheduler::CueInNaNSeconds exception will be thrown. This only applies to releases 2019.05 and later.

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

    (Scheduler) method loads

    Defined as:

    method loads()

    This is a method stub, should be re-implemented when subclassing.