From e0470c4f45694fde5b884cb43d2712cef8c7d2eb Mon Sep 17 00:00:00 2001 From: MatthijsBlom Date: Sat, 18 Apr 2026 23:46:59 +0200 Subject: [PATCH 1/2] demonstrate the benefit of the mutex --- exercises/091_async7.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/exercises/091_async7.zig b/exercises/091_async7.zig index 1b83795..629d276 100644 --- a/exercises/091_async7.zig +++ b/exercises/091_async7.zig @@ -52,6 +52,12 @@ fn increment(io: std.Io, state: *SharedState, times: u32) void { state.mutex.??? catch return; defer state.mutex.unlock(); // <-- what's missing here? + // Sleep to give the other tasks a chance to run in the meantime. + // We do this here only to make nondeterminism more visible. + io.sleep(std.Io.Duration.fromMilliseconds(1), .awake) catch {}; + + // What happens if you neglect to lock the mutex? + state.counter += 1; } } From c4cb76ea8e1ac9b061f1436aafcd0bef55183e0f Mon Sep 17 00:00:00 2001 From: MatthijsBlom Date: Sat, 18 Apr 2026 23:50:13 +0200 Subject: [PATCH 2/2] Update patches/patches/091_async7.patch --- patches/patches/091_async7.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patches/patches/091_async7.patch b/patches/patches/091_async7.patch index b4bab9b..3b6b789 100644 --- a/patches/patches/091_async7.patch +++ b/patches/patches/091_async7.patch @@ -1,5 +1,5 @@ ---- exercises/091_async7.zig 2026-04-02 10:50:08.142508099 +0200 -+++ answers/091_async7.zig 2026-04-02 10:49:59.629341593 +0200 +--- exercises/091_async7.zig 2026-04-18 23:30:40.963951835 +0200 ++++ answers/091_async7.zig 2026-04-18 23:33:47.313340585 +0200 @@ -49,8 +49,8 @@ for (0..times) |_| { // Acquire the lock before modifying shared state. @@ -9,5 +9,5 @@ + state.mutex.lock(io) catch return; + defer state.mutex.unlock(io); - state.counter += 1; - } + // Sleep to give the other tasks a chance to run in the meantime. + // We do this here only to make nondeterminism more visible.