调度程序是一段代码,它确定使用哪些资源来运行哪个任务以及何时运行。此角色包含适用于所有类型调度程序的代码。
例如对 Proc::Async
、Promise
、Supply
的一些操作允许您明确指定调度程序;它们通常希望这些调度程序遵循由 Scheduler
定义的接口。
方法§
方法 uncaught_handler§
method uncaught_handler() is rw
正在调度和运行的代码中未捕获的异常的处理程序的 RW 访问器。
方法 cue§
method cue(, Instant :, :, :, : = 1; : --> Cancellation)
调度可调用对象 (&code
) 以执行并返回实例化的 Cancellation
对象以取消代码的执行调度(如果您指定 :every ( time )
命名参数,这一点尤其重要)。副词控制代码的运行时间和方式
$at
可以是Instant
,代码不会在该时间之前运行。或者,$in
是在运行代码之前要等待的秒数(可能是小数)。如果$at
在过去或$in
为负数,则延迟被视为零。实现可能会将$in
的非常小的值(例如低于 0.001s)或$at
- now 的结果等同于零。如果指定了
$every
,则将其解释为在重新执行代码之前要等待的秒数(可能是小数)。如果支持,实现可能会将过小的值视为最低分辨率,并可能在这种情况下发出警告;例如,将0.0001
视为0.001
。$times
告诉调度程序运行代码的次数。如果
&code
终止,则使用Exception
作为其唯一参数调用&catch
。如果
$at
或$in
为Inf
,则永远不会运行&code
;如果$every
为Inf
,则&code
将只运行一次。如果三个中的任何一个为-Inf
,则&code
将立即运行。如果三个中的任何一个为NaN
,则会引发X::Scheduler::CueInNaNSeconds
异常。这仅适用于 2019.05 及更高版本。
应该对返回的 Cancellation
对象调用 cancel
方法以取消代码的(可能重复的)提示。
方法 loads§
method loads()
这是一个方法存根,在子类化时应重新实现。