apply kprotty's WaitGroup fix

This commit is contained in:
Andrew Kelley 2020-12-21 18:23:47 -07:00
parent 19459840fe
commit 78ab1f609a

View File

@ -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();
}