欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Unity dots IJobParallelFor并行的数据写入问题

Unity dots IJobParallelFor并行的数据写入问题

2024/10/25 8:21:25 来源:https://blog.csdn.net/u014716849/article/details/140929449  浏览:    关键词:Unity dots IJobParallelFor并行的数据写入问题

Unity dots IJobParallelFor并行的数据写入问题

[BurstCompile]  
public struct IncrementJob : IJobParallelFor  
{  [ReadOnly] public NativeArray<int> baseValues;  public NativeArray<int> resultValues;   public void Execute(int index)  {resultValues[index+1]=5;}
}

上面的写法会报ReadWriteBuffers are restricted to only read & write the element at the job index错误,这是出于性能和线程安全的考虑,Unity Job System限制了每个Job只能访问或修改由Job索引指定的单个元素,因此这里非index索引下的数据写入收到了限制。

解决方案一

对于接触限制的数据加入NativeDisableParallelForRestriction

[BurstCompile]  
public struct IncrementJob : IJobParallelFor  
{  [ReadOnly] public NativeArray<int> baseValues;  [NativeDisableParallelForRestriction] public NativeArray<int> resultValues;   public void Execute(int index)  {resultValues[index+1]=5;}
}
解决方案二

只访问index索引下的数据

[BurstCompile]  
public struct IncrementJob : IJobParallelFor  
{  [ReadOnly] public NativeArray<int> baseValues;  public NativeArray<int> resultValues;   public void Execute(int index)  {resultValues[index]=5;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com