fn destroy(fiber: *Fiber) void fiber: *Fiber305
306
307
308
309
310
311
312
313
314
315
316
317 fn destroy(fiber: *Fiber) void {
const thread: *Thread = .current();
assert(fiber.status.queue_next == null);
fiber.status = .{ .free_next = @atomicLoad(?*Fiber, &thread.free_queue, .acquire) };
while (true) fiber.status.free_next = @cmpxchgWeak(
?*Fiber,
&thread.free_queue,
fiber.status.free_next,
fiber,
.acq_rel,
.acquire,
) orelse break;
}