学习语言

异步任务

以异步函数、等待、取消和结构化并候组织确定性的协作任务。

异 法声明异步函数。调用异步函数不会立刻执行函数体,而是得到任务<返回类型>;第一次会启动任务并取得结果。

 倍增(值:):
 2


 甲:任务<> 倍增21);
 任务状态(甲); # 待行
 甲;          # 42
 任务状态(甲); # 完成

结果或错误会缓存在任务中,因此已完成任务可重复取消(任务)只会取消尚处于“待行”的任务,并返回是否确实取消;已取消任务不可再等候。任务状态是待行运行完成失败取消之一。任务在自身执行期间再次等候自己,会得到明确的“不可自相等候”错误。

结构化并候

并候(任务列)按列中顺序等待任务并返回结果列。任一任务失败时,尚未开始的同组任务会被取消,错误会增加“结构化并候”踪迹。

 倍增2);
 倍增3);
 并候(【甲,乙】); # 【4,6】

0.8 的任务是单线程、确定性的协作式模型,而非线程并行模型。共享变量仍遵循普通词法作用域;任务只在并候处推进,不会在语句之间抢占执行。这个约束让树解释器、字节码 VM、测试和嵌入宿主拥有相同的可观察顺序。