---
url: /process-functions/process-fork.md
description: Queues a process to run in parallel when process.join is called.
---

# process.fork

Queues a process to run in parallel with others. Queued processes don't start until [process.join](/process-functions/process-join) is called, which runs them all at once.

```js
process.fork(processNameOrId)
process.fork(modelNameOrId, processNameOrId)
process.fork(processNameOrId, parameters)
process.fork(modelNameOrId, processNameOrId, parameters)
```

## Parameters

| Parameter | Type | Description |
|---|---|---|
| `modelNameOrId` | `string` | Optional. The model's name or id. Defaults to the current model. |
| `processNameOrId` | `string` | The process's name or id. |
| `parameters` | `object` | Optional. The parameters to pass to the process, keyed by parameter name. |

## Returns

`true` if the process was queued, otherwise `false`.

## Examples

```js
// Fork a process without parameters.
const forked = process.fork("yourProcess");
console.log(forked); // true or false
```

```js
// Fork a process within a specific model with parameters.
const parameters = { "param1": "value1", "param2": "value2" };
const forked = process.fork("yourModel", "yourProcess", parameters);
console.log(forked); // true or false
```

```js
// Load each region's sales at the same time.
const regions = ["North", "South", "East", "West"];

for (const region of regions) {
    if (!process.fork("Load Sales", { "region": region })) {
        console.log("Could not queue Load Sales for " + region);
    }
}

process.join(); // Runs all four at once and waits for them to finish.
console.log("All regions loaded");
```

## Related

* [process.join](/process-functions/process-join)
* [process.execute](/process-functions/process-execute)
