//多个jobs依赖关系 public void SchedulingTwoJobs() { NativeArray <float> result = new NativeArray <float>(1, Allocator.TempJob); MyJob jobData = new MyJob(); jobData.a = 10; jobData.b = 10; jobData.result = result; // 设置第一个任务开关 JobHandle firstHandle = jobData.Schedule(); //设置第二个任务 AddOneJob incJobData = new AddOneJob(); incJobData.result = result; // UnityEngine.Debug.Log(result[0]); //设置依赖 JobHandle secondHandle = incJobData.Schedule(firstHandle); //等待完成 secondHandle.Complete(); float aPlusB = result[0]; UnityEngine.Debug.Log(aPlusB); //释放资源 result.Dispose(); }
public void jobTesting() { NativeArray <float> result = new NativeArray <float>(1, Allocator.TempJob); // Setup the data for job #1 MyJob jobData = new MyJob(); jobData.a = 10; jobData.b = 10; jobData.result = result; // Schedule job #1 JobHandle firstHandle = jobData.Schedule(); // Setup the data for job #2 AddOneJob incJobData = new AddOneJob(); incJobData.result = result; // Schedule job #2 JobHandle secondHandle = incJobData.Schedule(firstHandle); // Wait for job #2 to complete secondHandle.Complete(); // All copies of the NativeArray point to the same memory, you can access the result in "your" copy of the NativeArray float aPlusB = result[0]; Debug.Log(aPlusB); // Free the memory allocated by the result array result.Dispose(); }
private void Start() { // Create a native array of a single float to store the result in. This example waits for the job to complete NativeArray <float> result = new NativeArray <float>(1, Allocator.TempJob); // Setup the data for job #1 MyJob jobData = new MyJob(); jobData.a = 10; jobData.b = 10; jobData.result = result; // Schedule job #1 JobHandle firstHandle = jobData.Schedule(); // Setup the data for job #2 AddOneJob incJobData = new AddOneJob(); incJobData.result = result; // Schedule job #2 JobHandle secondHandle = incJobData.Schedule(firstHandle); // Wait for job #2 to complete secondHandle.Complete(); // All copies of the NativeArray point to the same memory, you can access the result in "your" copy of the NativeArray float aPlusB = result[0]; // Free the memory allocated by the result array result.Dispose(); Debug.Log($"O valor de sei la o que é {aPlusB}"); }
void ScheduleTestJob() { // Create a native array of a single float to store the result. This example waits for the job to complete for illustration purposes NativeArray <float> result = new NativeArray <float>(1, Allocator.TempJob); MyJob tempJob = new MyJob(); tempJob.a = 10; tempJob.b = 10; tempJob.result = result; JobHandle tempJobHandle = tempJob.Schedule(); // Setup the data for job #2 AddOneJob addOneJob = new AddOneJob(); addOneJob.result = result; JobHandle secondJobHandle = addOneJob.Schedule(tempJobHandle); secondJobHandle.Complete(); float resultValue = result[0]; Debug.Log("Result of the myJob: " + resultValue); result.Dispose(); }
protected override void OnUpdate() { var addOneTypeHandle = GetComponentTypeHandle <AddOne>(); var addTwoTypeHandle = GetComponentTypeHandle <AddTwo>(); var addThreeTypeHandle = GetComponentTypeHandle <AddThree>(); var addFourTypeHandle = GetComponentTypeHandle <AddFour>(); var dependencies = new NativeArray <JobHandle>(4, Allocator.Temp); var addOneJob = new AddOneJob { addOneTypeHandle = addOneTypeHandle, }; dependencies[0] = addOneJob.ScheduleParallel(m_AddOneGroup, Dependency); var addTwoJob = new AddTwoJob { addTwoTypeHandle = addTwoTypeHandle, }; dependencies[1] = addTwoJob.ScheduleParallel(m_AddTwoGroup, Dependency); var addThreeJob = new AddThreeJob { addThreeTypeHandle = addThreeTypeHandle, }; dependencies[2] = addThreeJob.ScheduleParallel(m_AddThreeGroup, Dependency); var addFourJob = new AddFourJob { addFourTypeHandle = addFourTypeHandle, }; dependencies[3] = addFourJob.ScheduleParallel(m_AddFourGroup, Dependency); Dependency = JobHandle.CombineDependencies(dependencies); }