[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Task](https://evolu.dev/docs/api-reference/common/Task) › createMutex

```ts
function createMutex(): Mutex;
```

Defined in: [packages/common/src/Task.ts:5927](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5927)

Creates a [Mutex](https://evolu.dev/docs/api-reference/common/Task/interfaces/Mutex).

### Example

```ts
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);
```