std.Io.Mutex、std.Io.RwLock、std.Io.Semaphore、std.Io.Event 和 std.Io.Queue 提供支持取消的协调和类型化生产者-消费者存储。 示例展示锁的明确所有权、共享读锁、许可管理、event reset、队列关闭 和 FIFO 读取。

//! Show Io synchronization primitives and a typed queue.

const std = @import("std");

pub fn main(init: std.process.Init) !void {
    const io = init.io;

    var mutex: std.Io.Mutex = .init;
    try mutex.lock(io);
    defer mutex.unlock(io);

    var read_write_lock: std.Io.RwLock = .init;
    try read_write_lock.lockShared(io);
    read_write_lock.unlockShared(io);

    var semaphore: std.Io.Semaphore = .{ .permits = 1 };
    try semaphore.wait(io);
    semaphore.post(io);

    var event: std.Io.Event = .unset;
    event.set(io);
    const event_ready = event.isSet();
    event.reset();

    var queue_storage: [4]u32 = undefined;
    var queue = std.Io.Queue(u32).init(&queue_storage);
    try queue.putOne(io, 10);
    try queue.putOne(io, 20);
    const first = try queue.getOne(io);
    const second = try queue.getOne(io);
    queue.close(io);

    std.debug.print("event ready: {any}, reset: {any}\n", .{ event_ready, !event.isSet() });
    std.debug.print("queue values: {d}, {d}\n", .{ first, second });
}