authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-21 18:23:47-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-23 13:36:21-08:00
log78ab1f609a4fb2514d8223e8ce6bf9195c01b5d6
tree17e823447fe3dfa606c4a411c37c3f135095c833
parent19459840fe0a1dcc39a4552a430a70fbf39b52ea

apply kprotty's WaitGroup fix


1 files changed, 13 insertions(+), 11 deletions(-)

src/WaitGroup.zig+13-11
......@@ -32,19 +32,21 @@ pub fn stop(self: *WaitGroup) void {
3232}
3333
3434pub fn wait(self: *WaitGroup) void {
35 const held = self.lock.acquire();
35 while (true) {
36 const held = self.lock.acquire();
3637
37 if (self.counter == 0) {
38 held.release();
39 return;
40 }
38 if (self.counter == 0) {
39 held.release();
40 return;
41 }
4142
42 var event = std.ResetEvent.init();
43 defer event.deinit();
43 var event = std.ResetEvent.init();
44 defer event.deinit();
4445
45 std.debug.assert(self.event == null);
46 self.event = &event;
46 std.debug.assert(self.event == null);
47 self.event = &event;
4748
48 held.release();
49 event.wait();
49 held.release();
50 event.wait();
51 }
5052}