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 › Group › cancelLocked Private Function cancelLocked Doc Source Private Function std.Io.Dispatch.Group.cancelLocked
fn cancelLocked (group : Group , ev : *Evented , maybe_awaiter : ?*Fiber ) bool Params File Io/Dispatch.zig: 1286
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312 fn cancelLocked (group : Group , ev : *Evented , maybe_awaiter : ?*Fiber ) bool {
const list_ptr = group .listPtr ();
const list = @atomicRmw (
List ,
list_ptr ,
.Add ,
.{ .cancel_requested = true , .awaiter_delayed = false , .fibers = .null },
.monotonic ,
);
assert (!list .cancel_requested );
if (list .fibers .unpack ()) |head | {
var maybe_fiber : ?*Fiber = head ;
while (maybe_fiber ) |fiber | {
fiber .requestCancel (ev );
maybe_fiber = fiber .link .group .next ;
}
if (maybe_awaiter ) |awaiter | _ = group .registerAwaiter (awaiter );
return false ;
}
@atomicStore (
List ,
list_ptr ,
.{ .cancel_requested = false , .awaiter_delayed = false , .fibers = .null },
.release ,
);
return if (maybe_awaiter ) |_ | true else list .awaiter_delayed ;
}
Assumes the mutex is held.