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. Public Function
pubfnsignal(cond: *Condition, io: Io) void {
varprev_state = cond.state.load(.monotonic);
while (prev_state.waiters > prev_state.signals) {
@branchHint(.unlikely);
prev_state = cond.state.cmpxchgWeak(prev_state, .{
.waiters = prev_state.waiters,
.signals = prev_state.signals + 1,
}, .release, .monotonic) orelse {
// Update the epoch to tell the waiting threads that there are new signals for them.// Note that a waiting thread could miss a take if *exactly* (1<<32)-1 wakes happen// between it observing the epoch and sleeping on it, but this is extraordinarily// unlikely due to the precise number of calls required._ = cond.epoch.fetchAdd(1, .release); // `.release` to ensure ordered after `state` updateio.futexWake(u32, &cond.epoch.raw, 1);
return;
};
}
}