Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › Io/ › Dispatch.zig › batchAwaitAsync
batchAwaitAsync
Dispatch.batchAwaitAsync
fn batchAwaitAsync (userdata : ?*anyopaque , batch : *Io .Batch ) Io .Cancelable !void
File
Code
fn batchAwaitAsync (userdata : ?*anyopaque , batch : *Io .Batch ) Io .Cancelable !void {
const ev : *Evented = @ptrCast (@alignCast (userdata ));
const queue = ev .batchDrainSubmitted (batch , false ) catch |err | switch (err ) {
error .ConcurrencyUnavailable => unreachable ,
error .Canceled => |e | return e ,
} orelse return ;
if (batch .pending .head == .none ) return ;
var waiter : BatchWaiter = .{
.sleeper = .init (ev .queue , Thread .current ().currentFiber ()),
.queue = queue ,
};
if (batch .completed .head != .none ) BatchWaiter .signal (&waiter );
queue .as_object ().set_context (&waiter );
ev .yield (.{ .@"resume" = queue .as_object () });
}