在作业系统中访问静态数据是否安全?

时间:2019-01-13 12:38:20

标签: unity3d

我想用job写在静态列表上-Unity中新引入的Job System(多线程系统)。

以下代码有效,但仅在启动时会出现意外的异常错误。尽管从作业中删除突发编译器可以消除该错误,但是从作业中使用静态数据是否仍然安全(如果可能,则不使用突发)?

 [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 :(得分:0)

这是不安全的,因为您不能保证没有其他东西可以同时写入该字段。

相反,将Iz设为非静态字段,并在计划作业之前将其标记为[ReadOnly]属性并对其进行分配。