Безопасен ли доступ к статическим данным в системе заданий? - PullRequest
0 голосов
/ 13 января 2019

Я хочу написать в статическом списке с заданием - Недавно внедренная система заданий (многопоточность) в Unity.

Следующий код работает, но выдает неожиданную ошибку исключения только при запуске. Хотя удаление пакетного компилятора из задания устраняет эту ошибку, но все же безопасно ли использовать статические данные из задания (без использования пакета, если это возможно)?

 [BurstCompile]
 struct ColChecker : IJobParallelFor
 {
    public NativeArray<Vector3> pos;

    public static NativeArray<int> Iz;
    public int key;
    public int no;
    public void Execute(int index)
       { 
       /// Code to get no
       Iz[key] = no;
    }
 }

1 Ответ

0 голосов
/ 14 января 2019

Это небезопасно, потому что вы не можете гарантировать, что больше никто не будет писать в это поле одновременно.

Вместо этого сделайте Iz нестатическим полем, отметьте его атрибутом [ReadOnly] и назначьте его перед планированием задания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...