diff --git a/src/scheduler.zig b/src/scheduler.zig index 96d34c8..84662c5 100644 --- a/src/scheduler.zig +++ b/src/scheduler.zig @@ -391,3 +391,17 @@ pub fn cancel(self: *Scheduler, id: TaskID) !void { child.cancel = true; } + +pub fn checkCancel(self: *Scheduler) !void { + const task = self.findTaskByID(self.current_id.?).?; + if (!task.cancel) + return; + + task.cancel = false; + return error.Canceled; +} + +pub fn recancel(self: *Scheduler) void { + const task = self.findTaskByID(self.current_id.?).?; + task.cancel = true; +}