From 504ad56815c3deb38319ac7989dd6c50c559b780 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 23 Oct 2024 14:46:46 -0700 Subject: link.flushTaskQueue: move safety lock The safety lock needs to happen after check() --- src/ThreadSafeQueue.zig | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/ThreadSafeQueue.zig') diff --git a/src/ThreadSafeQueue.zig b/src/ThreadSafeQueue.zig index 1cf6aaaa3a..74bbdc418f 100644 --- a/src/ThreadSafeQueue.zig +++ b/src/ThreadSafeQueue.zig @@ -52,12 +52,13 @@ pub fn ThreadSafeQueue(comptime T: type) type { self.mutex.lock(); defer self.mutex.unlock(); try self.shared.appendSlice(gpa, items); - const was_waiting = switch (self.state) { + return switch (self.state) { .run => false, - .wait => true, + .wait => { + self.state = .run; + return true; + }, }; - self.state = .run; - return was_waiting; } /// Safe only to call exactly once when initially starting the worker. -- cgit v1.2.3