我想用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;
}
}
答案 0 :(得分:0)
这是不安全的,因为您不能保证没有其他东西可以同时写入该字段。
相反,将Iz设为非静态字段,并在计划作业之前将其标记为[ReadOnly]属性并对其进行分配。