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 standard library.
std › Io › Dispatch › Fiber › requestCancel Private Function requestCancel Doc Source Private Function std.Io.Dispatch.Fiber.requestCancel
fn requestCancel (fiber : *Fiber , ev : *Evented ) void Params File Io/Dispatch.zig: 255
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276 fn requestCancel (fiber : *Fiber , ev : *Evented ) void {
const cancel_status = @atomicRmw (
Fiber .CancelStatus ,
&fiber .cancel_status ,
.Or ,
.{ .requested = true , .awaiting = .nothing },
.acquire ,
);
assert (!cancel_status .requested );
switch (cancel_status .awaiting ) {
.nothing => {},
.group => {
// The awaiter received a cancelation request while awaiting a group,
// so propagate the cancelation to the group.
if (fiber .awaiting_group .cancel (ev , null )) {
fiber .awaiting_group = undefined ;
ev .queue .async (fiber , &Fiber .@"resume" );
}
},
_ => |awaiting | awaiting .toCancelable ().async (),
}
}