ciathefed/zoro
Bindings for tsoding's coroutines in Zig
Bindings for tsoding's coroutines in Zig
zig fetch --save "git+https://github.com/ciathefed/zoro#v0.1.1"
Add the following to build.zig
:
const zoro = b.dependency("zoro", .{
.target = target,
.optimize = optimize,
});
exe_mod.addImport("zoro", zoro.module("zoro"));
const std = @import("std");
const zoro = @import("zoro");
fn counter(arg: ?*anyopaque) callconv(.C) void {
const n = @as(usize, @intCast(@intFromPtr(arg)));
for (0..n) |i| {
std.debug.print("[{}] {}\n", .{ zoro.id(), i });
zoro.yield();
}
}
pub fn main() !void {
zoro.init();
zoro.go(counter, @ptrFromInt(5));
zoro.go(counter, @ptrFromInt(10));
while (zoro.alive() > 1) {
zoro.yield();
}
}