# ScheduleParallel<T>(T, int, int, JobHandle)

> Schedules the job to execute concurrently on multiple worker threads.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Jobs](/engine/6000.5/script-reference/unity/jobs.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static JobHandle ScheduleParallel<T>(this T jobData, int arrayLength, int innerloopBatchCount, JobHandle dependency) where T : struct, IJobFor
```

### Parameters

**** (T): The job and data to schedule.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): This job's Execute method will be called this many times, with its index argument ranging from 0 to (arrayLength - 1). Typically, this corresponds to the length of an array or array-like container passed in the job struct, but this is not necessarily the case.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The number of iterations which workstealing is performed over. For example, a value of 32 means the job queue steals 32 iterations and then performs them in an efficient inner loop.**** (\[JobHandle]\(/engine/6000.5/script-reference/unity/jobs/jobhandle)): The [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) of the job's dependency. You can use dependencies to make sure that a job executes on worker threads after the dependency has completed execution and two jobs that read or write to same data don't run in parallel.

### Returns

| Type                                                                 | Description                                                                                                                                                                                                           |
| -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) | The [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) of the scheduled job. You can use the `JobHandle` as a dependency for a later job or to make sure that the job completes on the main thread. |

### Remarks

For large job structs, use [IJobForExtensions.ScheduleParallelByRef](/engine/6000.5/script-reference/unity/jobs/ijobforextensions/scheduleparallelbyref.md) to avoid any large pass-by-values.

To process all loop elements on a single worker thread, use [IJobForExtensions.ScheduleByRef](/engine/6000.5/script-reference/unity/jobs/ijobforextensions/schedulebyref.md).

Additional Resources: [IJobFor](/engine/6000.5/script-reference/unity/jobs/ijobfor.md).
