Class JobDependencyTracker Extends IAstarPooledObject

Public

Automatic dependency tracking for the Unity Job System.

Uses reflection to find the [ReadOnly] and [WriteOnly] attributes on job data struct fields. These are used to automatically figure out dependencies between jobs.

A job that reads from an array depends on the last job that wrote to that array. A job that writes to an array depends on the last job that wrote to the array as well as all jobs that read from the array.

struct ExampleJob : IJob {
public NativeArray<int> someData;

public void Execute () {
// Do something
}
}

void Start () {
var tracker = new JobDependencyTracker();
var data = new NativeArray<int>(100, Allocator.TempJob);
var job1 = new ExampleJob {
someData = data
}.Schedule(tracker);

var job2 = new ExampleJob {
someData = data
}.Schedule(tracker);

// job2 automatically depends on job1 because they both require read/write access to the data array
}

See

#Pathfinding.Util.IJobExtensions

Inner Types

Public Methods

CompleteMainThreadWork ()
Public
DeferFree (handle, dependsOn)

Frees the GCHandle when the JobDependencyTracker is disposed.

Public
ForceLinearDependencies ()

Disable dependency tracking and just run jobs one after the other.

Public
NewNativeArray< T > (length, allocator, options=…)
Public
RunMainThreadWork ()
Public
ScheduleBatch (commands, results, minCommandsPerJob)

Schedules a raycast batch command.

Public

Public Variables

AllWritesDependency

JobHandle that represents a dependency for all jobs.

Public
forceLinearDependencies
Public

Private/Protected Members

AddMainThreadWork (job, doneEvent, dependenciesDoneEvent, dependsOn)
Package
arena
Private
Dispose ()

Diposes this tracker.

Private
gcHandlesToFree
Private
JobReadsFrom (job, nativeArrayHash, jobHash)
Package
JobWritesTo (job, nativeArrayHash, jobHash)
Package
mainThreadWork
Private
OnEnterPool ()
Private
slots
Package
temporaryJobs
Private