[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) › createGate

```ts
function createGate<D>(): Gate<D>;
```

Defined in: [packages/common/src/Task.ts:2331](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L2331)

Creates a [Gate](https://evolu.dev/docs/api-reference/common/Task/interfaces/Gate) that starts closed.

Useful for "stop/go" logic where multiple Tasks need to wait for a state
change.

### Example

```ts
const networkGate = createGate();

// Pause processing when offline
const onOffline = () => networkGate.close();

// Resume processing when online
const onOnline = () => networkGate.open();

const syncLoop = async (run) => {
  while (true) {
    // Blocks here whenever the gate is closed
    await run(networkGate.wait);
    await run(uploadNextItem);
  }
};
```