From f8230f98565be6ff958b520e6e05a8286b7467f8 Mon Sep 17 00:00:00 2001 From: cozis Date: Sat, 23 May 2026 18:47:00 +0200 Subject: [PATCH] examples: Add program that uses Io.sleep --- examples/sleep.zig | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 examples/sleep.zig diff --git a/examples/sleep.zig b/examples/sleep.zig new file mode 100644 index 0000000..5f6c8d2 --- /dev/null +++ b/examples/sleep.zig @@ -0,0 +1,34 @@ +const std = @import("std"); +const Io = std.Io; + +const Simulator = @import("zigmulator"); + +fn slowProgram(init: std.process.Init) anyerror!void { + try Io.sleep(init.io, .fromMilliseconds(20), .awake); + + var stdout = Io.File.stdout().writerStreaming(init.io, &.{}); + try stdout.interface.writeAll("slow woke after 20ms\n"); + try stdout.interface.flush(); +} + +fn fastProgram(init: std.process.Init) anyerror!void { + try Io.sleep(init.io, .fromMilliseconds(5), .awake); + + var stdout = Io.File.stdout().writerStreaming(init.io, &.{}); + try stdout.interface.writeAll("fast woke after 5ms\n"); + try stdout.interface.flush(); +} + +pub fn main(init: std.process.Init) !void { + var sim: Simulator = undefined; + sim.init(std.heap.page_allocator, init.io); + defer sim.deinit(); + + try sim.addExecutable("slow", slowProgram); + try sim.addExecutable("fast", fastProgram); + + try sim.spawn("slow", .{}); + try sim.spawn("fast", .{}); + + while (sim.scheduleOne()) {} +}