API reference › @evolu/common › Task › createMutex
function createMutex(): Mutex;
Defined in: packages/common/src/Task.ts:5927
Creates a Mutex.
Example
import {
assertEqual,
assertOk,
createMutex,
createRun,
ok,
sleep,
type Task,
} from "@evolu/common";
const mutex = createMutex();
let balance = 0;
const deposit = (amount: number): Task<void> =>
mutex.withLock(async (run) => {
const currentBalance = balance;
await run.ok(sleep("1ms"));
balance = currentBalance + amount;
return ok();
});
await using run = createRun();
const [first, second] = await Promise.all([run(deposit(2)), run(deposit(3))]);
assertOk(first, undefined);
assertOk(second, undefined);
assertEqual(balance, 5);