From 983d0587ab93bd7b16d0b00967627b2785d36c6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Wed, 15 Jul 2026 15:24:15 +0100 Subject: [PATCH 1/2] Avoid `a[] = v` pattern for atomic variable --- Project.toml | 2 +- src/ParallelTestRunner.jl | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 708a9b7..3bcc5b7 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "ParallelTestRunner" uuid = "d3525ed8-44d0-4b2c-a655-542cee43accc" authors = ["Valentin Churavy "] -version = "2.6.2" +version = "2.6.3" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" diff --git a/src/ParallelTestRunner.jl b/src/ParallelTestRunner.jl index 35f332b..4b4a03d 100644 --- a/src/ParallelTestRunner.jl +++ b/src/ParallelTestRunner.jl @@ -54,7 +54,8 @@ function PTRWorker(; exename=Base.julia_cmd()[1], exeflags=String[], env=String[ io = Lockable(IOBuffer()) wrkr = Malt.Worker(; exename, exeflags, env, monitor_stdout=false, monitor_stderr=false) stdio_loop(wrkr, io) - id = ID_COUNTER[] += 1 + Threads.atomic_add!(ID_COUNTER, 1) + id = ID_COUNTER[] return PTRWorker(wrkr, io, id) end From ba63d8986df81ff6bcc1778e4b85d722d841eb0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Wed, 15 Jul 2026 15:31:00 +0100 Subject: [PATCH 2/2] Remove one atomic load of `ID_COUNTER` --- src/ParallelTestRunner.jl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ParallelTestRunner.jl b/src/ParallelTestRunner.jl index 4b4a03d..1e27ae6 100644 --- a/src/ParallelTestRunner.jl +++ b/src/ParallelTestRunner.jl @@ -41,7 +41,7 @@ else Base.unlock(l::Lockable) = Base.unlock(l.lock) end -const ID_COUNTER = Threads.Atomic{Int}(0) +const ID_COUNTER = Threads.Atomic{Int}(1) # Thin wrapper around Malt.Worker, to handle the stdio loop differently. struct PTRWorker <: Malt.AbstractWorker @@ -54,8 +54,7 @@ function PTRWorker(; exename=Base.julia_cmd()[1], exeflags=String[], env=String[ io = Lockable(IOBuffer()) wrkr = Malt.Worker(; exename, exeflags, env, monitor_stdout=false, monitor_stderr=false) stdio_loop(wrkr, io) - Threads.atomic_add!(ID_COUNTER, 1) - id = ID_COUNTER[] + id = Threads.atomic_add!(ID_COUNTER, 1) return PTRWorker(wrkr, io, id) end