From 6eb88292cd7ca6e32bd3f6efb50f6a3e56198c98 Mon Sep 17 00:00:00 2001 From: Devin Ivy Date: Wed, 8 Apr 2026 11:30:14 -0400 Subject: [PATCH] chore: update atomics example to use AtomicInt32 Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/atomics/increment.ts | 6 ++++++ examples/atomics/main.ts | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 examples/atomics/increment.ts create mode 100644 examples/atomics/main.ts diff --git a/examples/atomics/increment.ts b/examples/atomics/increment.ts new file mode 100644 index 0000000..9122b77 --- /dev/null +++ b/examples/atomics/increment.ts @@ -0,0 +1,6 @@ +import { mo } from '../../src/index.ts'; +import type { AtomicInt32 } from '../../src/index.ts'; + +export const increment = mo(import.meta, (counter: AtomicInt32): number => { + return counter.add(1); +}); diff --git a/examples/atomics/main.ts b/examples/atomics/main.ts new file mode 100644 index 0000000..a09a004 --- /dev/null +++ b/examples/atomics/main.ts @@ -0,0 +1,19 @@ +// Shared memory between main thread and workers using AtomicInt32. +// +// Run: node --experimental-strip-types examples/atomics/main.ts + +import { workerPool, AtomicInt32 } from '../../src/index.ts'; +import { increment } from './increment.ts'; + +const counter = new AtomicInt32(); +const pool = workerPool(4); + +// Fire off 100 increments across 4 workers +await Promise.all( + Array.from({ length: 100 }, () => pool(increment(counter))), +); + +pool[Symbol.dispose](); + +console.log(`Expected: 100`); +console.log(`Actual: ${counter.load()}`); -- 2.51.2