Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

ReadOnlyAttribute

класс в Unity.Collections / Реализовано в: UnityEngine.CoreModule

Описание

Атрибут ReadOnly позволяет пометить член структуры, используемый в задании, как доступный только для чтения.

При использовании в задании собственные контейнеры по умолчанию доступны для чтения и записи. Это означает, что вы не можете запланировать одновременно два задания, ссылающихся на одни и те же контейнеры. При добавлении атрибута ReadOnly к полю контейнера в структуре задания контейнер помечается как доступный только для чтения, что позволяет параллельно выполнять два задания чтения данных. из того же контейнера.

Смотрите так же: IJob, IJobParallelFor.

using Unity.Jobs; using Unity.Collections; using UnityEngine;

public struct MyJob : IJob { [ReadOnly] public NativeArray input;

public NativeArray output;

public void Execute() { for (var i = 0; i < output.Length; ++i) output[i] = input[i]; } }

public class ParallelReplicator : MonoBehaviour { public void OnUpdate() { const int n = 10000; var original = new NativeArray(n, Allocator.Persistent); var clone1 = new NativeArray(n, Allocator.Persistent); var clone2 = new NativeArray(n, Allocator.Persistent);

var job1 = new MyJob { input = original, output = clone1 }; var job2 = new MyJob { input = original, output = clone2 };

var jobX = new MyJob { input = original, output = clone2 };

// Run the jobs in parallel. var jobs = JobHandle.CombineDependencies(job1.Schedule(), job2.Schedule());

// jobX.Schedule(); // Not allowed, throws exception because job2 is writing into copy2.

jobs.Complete();

jobX.Schedule().Complete(); // Allowed, because job2 has been completed by now.

original.Dispose(); clone1.Dispose(); clone2.Dispose(); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3