びぼうろくってみんなやってる

みんなやってるからぼくもやる

JobSystemMemo

  • [ReadOnly]と[WriteOnly]
    • [ReadOnly]はコピーを取り出すのみ
    • [WriteOnly]は新規生成を書き込むのみ
void Update()
{
  var nativeNumbers = new NativeArray<int>(length,Allocator.Temp);
    
  var jobA = new TestJobA
  {
    numbers = nativeNumbers
  };

  var jobB = new TestJobB
  {
    numbers = nativeNumbers
  };

  var jobHandleA = jobA.Schedule(length, innerLoopBatchCount);
  jobB.Schedule(length,innerLoopBatchCount,jobHandleA).Complete();

  nativeNumbers.Dispose();
}

public struct TestJobA : IJobParallelFor
{
  [ReadOnly] public NativeArray<int> numbers
  void IJobParallelFor.Execute(){}
}

public struct TestJobB : IJob
{
  [ReadOnly] public NativeArray<int> numbers;
  void IJob.Execute(){}
}
  • 上記の様な例だと、同じnativeNumbersを参照するTestJobAとTestJobBがあるため、[ReadOnly]をつけて、同時に処理しても、順番が入れ替わっても問題がないことを保証する必要があるっぽい。
  • TestJobAかBのどちらか一方の場合は、[ReadOnly]をつける必要は無い。
  • 書き方を間違えるとUnityが叱ってくれるので優しい。

  • こちらを見ながらもっと学ばねばという。

tsubakit1.hateblo.jp