默认情况下,原生容器会由安全系统进行跟踪,以避免竞争条件。安全系统内部封装了最佳实践,并从一开始就捕获了许多竞争条件错误。
但有时,您需要指明不符合安全系统的作业和数据访问。借助此属性,您可以针对具体容器显式禁用安全系统。这为您提供了完全控制权限,但这也意味着,如果您在作业运行时对某个 NativeArray 执行 Dispose() 操作,安全系统将完全无法为您提供任何错误消息。在这种情况下,Unity 很可能会崩溃。
using Unity.Collections; using Unity.Collections.LowLevel.Unsafe; using Unity.Jobs;
struct MyJob : IJob { [NativeDisableContainerSafetyRestriction] NativeArray<int> unsafeArrayAccess;
public void Execute() { //... } }