apply kprotty's WaitGroup fix
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
var event = std.ResetEvent.init();
|
||||
defer event.deinit();
|
||||
|
||||
std.debug.assert(self.event == null);
|
||||
self.event = &event;
|
||||
|
||||
if (self.counter == 0) {
|
||||
held.release();
|
||||
return;
|
||||
event.wait();
|
||||
}
|
||||
|
||||
var event = std.ResetEvent.init();
|
||||
defer event.deinit();
|
||||
|
||||
std.debug.assert(self.event == null);
|
||||
self.event = &event;
|
||||
|
||||
held.release();
|
||||
event.wait();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user