Commit 78ab1f609a
Changed files (1)
src/WaitGroup.zig
@@ -32,19 +32,21 @@ pub fn stop(self: *WaitGroup) void {
}
pub fn wait(self: *WaitGroup) void {
- const held = self.lock.acquire();
+ while (true) {
+ const held = self.lock.acquire();
- if (self.counter == 0) {
- held.release();
- return;
- }
+ if (self.counter == 0) {
+ held.release();
+ return;
+ }
- var event = std.ResetEvent.init();
- defer event.deinit();
+ var event = std.ResetEvent.init();
+ defer event.deinit();
- std.debug.assert(self.event == null);
- self.event = &event;
+ std.debug.assert(self.event == null);
+ self.event = &event;
- held.release();
- event.wait();
+ held.release();
+ event.wait();
+ }
}