# CombineDependencies

> Combines multiple dependencies into a single dependency.

## Definition

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

## CombineDependencies(JobHandle, JobHandle)

Combines multiple dependencies into a single dependency.

```csharp
public static JobHandle CombineDependencies(JobHandle job0, JobHandle job1)
```

### Parameters

**** (\[JobHandle]\(/engine/6000.0/script-reference/unity/jobs/jobhandle)): **** (\[JobHandle]\(/engine/6000.0/script-reference/unity/jobs/jobhandle)):&#x20;

### Returns

| Type                                                                 | Description |
| -------------------------------------------------------------------- | ----------- |
| [JobHandle](/engine/6000.0/script-reference/unity/jobs/jobhandle.md) |             |

### Remarks

All job schedule methods for [IJob](/engine/6000.0/script-reference/unity/jobs/ijob.md) or [IJobParallelFor](/engine/6000.0/script-reference/unity/jobs/ijobparallelfor.md) job types take a single dependency. Sometimes you might need to express dependencies against multiple running jobs at the same time. Use this method to combine a set of dependencies into a single dependency that can be passed to a job.

### Examples

```csharp
// Schedule 3 jobs, jobs a and b can run in parallel to each other,
// job c will only run once both jobA and jobB has completed

// Schedule job a
var jobA = new MyJob(...);
var jobAHandle = jobA.Schedule();

// Schedule job b
var jobB = new MyJob(...);
var jobBHandle = jobB.Schedule();

// For job c, combine dependencies of job a and b
// Then use that for scheduling the next job
var jobC = new DependentJob(...);
var dependency = JobHandle.CombineDependencies(jobAHandle, jobBHandle);
jobC.Schedule(dependency);
```

## CombineDependencies(JobHandle, JobHandle, JobHandle)

Combines multiple dependencies into a single dependency.

```csharp
public static JobHandle CombineDependencies(JobHandle job0, JobHandle job1, JobHandle job2)
```

### Parameters

**** (\[JobHandle]\(/engine/6000.0/script-reference/unity/jobs/jobhandle)): **** (\[JobHandle]\(/engine/6000.0/script-reference/unity/jobs/jobhandle)): **** (\[JobHandle]\(/engine/6000.0/script-reference/unity/jobs/jobhandle)):&#x20;

### Returns

| Type                                                                 | Description |
| -------------------------------------------------------------------- | ----------- |
| [JobHandle](/engine/6000.0/script-reference/unity/jobs/jobhandle.md) |             |

### Remarks

All job schedule methods for [IJob](/engine/6000.0/script-reference/unity/jobs/ijob.md) or [IJobParallelFor](/engine/6000.0/script-reference/unity/jobs/ijobparallelfor.md) job types take a single dependency. Sometimes you might need to express dependencies against multiple running jobs at the same time. Use this method to combine a set of dependencies into a single dependency that can be passed to a job.

### Examples

```csharp
// Schedule 3 jobs, jobs a and b can run in parallel to each other,
// job c will only run once both jobA and jobB has completed

// Schedule job a
var jobA = new MyJob(...);
var jobAHandle = jobA.Schedule();

// Schedule job b
var jobB = new MyJob(...);
var jobBHandle = jobB.Schedule();

// For job c, combine dependencies of job a and b
// Then use that for scheduling the next job
var jobC = new DependentJob(...);
var dependency = JobHandle.CombineDependencies(jobAHandle, jobBHandle);
jobC.Schedule(dependency);
```

## CombineDependencies(NativeArray\<JobHandle>)

Combines multiple dependencies into a single dependency.

```csharp
public static JobHandle CombineDependencies(NativeArray<JobHandle> jobs)
```

### Parameters

**** (\[NativeArray\<JobHandle>]\(/engine/6000.0/script-reference/unity/collections/nativearray1)):&#x20;

### Returns

| Type                                                                 | Description |
| -------------------------------------------------------------------- | ----------- |
| [JobHandle](/engine/6000.0/script-reference/unity/jobs/jobhandle.md) |             |

### Remarks

All job schedule methods for [IJob](/engine/6000.0/script-reference/unity/jobs/ijob.md) or [IJobParallelFor](/engine/6000.0/script-reference/unity/jobs/ijobparallelfor.md) job types take a single dependency. Sometimes you might need to express dependencies against multiple running jobs at the same time. Use this method to combine a set of dependencies into a single dependency that can be passed to a job.

### Examples

```csharp
// Schedule 3 jobs, jobs a and b can run in parallel to each other,
// job c will only run once both jobA and jobB has completed

// Schedule job a
var jobA = new MyJob(...);
var jobAHandle = jobA.Schedule();

// Schedule job b
var jobB = new MyJob(...);
var jobBHandle = jobB.Schedule();

// For job c, combine dependencies of job a and b
// Then use that for scheduling the next job
var jobC = new DependentJob(...);
var dependency = JobHandle.CombineDependencies(jobAHandle, jobBHandle);
jobC.Schedule(dependency);
```

## CombineDependencies(NativeSlice\<JobHandle>)

Combines multiple dependencies into a single dependency.

```csharp
public static JobHandle CombineDependencies(NativeSlice<JobHandle> jobs)
```

### Parameters

**** (\[NativeSlice\<JobHandle>]\(/engine/6000.0/script-reference/unity/collections/nativeslice1)):&#x20;

### Returns

| Type                                                                 | Description |
| -------------------------------------------------------------------- | ----------- |
| [JobHandle](/engine/6000.0/script-reference/unity/jobs/jobhandle.md) |             |

### Remarks

All job schedule methods for [IJob](/engine/6000.0/script-reference/unity/jobs/ijob.md) or [IJobParallelFor](/engine/6000.0/script-reference/unity/jobs/ijobparallelfor.md) job types take a single dependency. Sometimes you might need to express dependencies against multiple running jobs at the same time. Use this method to combine a set of dependencies into a single dependency that can be passed to a job.

### Examples

```csharp
// Schedule 3 jobs, jobs a and b can run in parallel to each other,
// job c will only run once both jobA and jobB has completed

// Schedule job a
var jobA = new MyJob(...);
var jobAHandle = jobA.Schedule();

// Schedule job b
var jobB = new MyJob(...);
var jobBHandle = jobB.Schedule();

// For job c, combine dependencies of job a and b
// Then use that for scheduling the next job
var jobC = new DependentJob(...);
var dependency = JobHandle.CombineDependencies(jobAHandle, jobBHandle);
jobC.Schedule(dependency);
```
