Unity C# - 在完成之前停止执行IJobParallelFor
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity C# - 在完成之前停止执行IJobParallelFor相关的知识,希望对你有一定的参考价值。
我正在创建一个Unity作业,为每个输入运行大量计算。当在大小256个批次的IJobParallelFor作业中分割输入时,传入1330输入总共需要600秒。
工作正常,在启动后,我在主线程上使用Coroutine来检查作业是否完成,然后调用job.Complete()将结果传递回主线程。现在Unity不会冻结!好极了!但是,如果我再次按下编辑器中的播放按钮以停止Unity的执行,则作业将继续运行并冻结Unity直到完成。
我找不到任何文件或任何方式强行停止执行这些工作。我使用OnDisable()调用job.Complete()并在那里处理NativeArray。但最重要的是,我只需要这些工作就可以停止运行了。有没有办法手动停止执行?
谢谢!
我找不到取消正在进行的工作的任何方法,但虽然完全有可能这是一个错误或疏忽,我想你可能需要考虑你使用工作系统的可能性是什么不是专为。 Unity的工作系统似乎主要是为了帮助在新的Data Orientated Tech Stack中进行并行化,这可能意味着在帧的时间尺度上运行,而不是分钟。
您的问题可能更适合.NET的并行化工具,即Task和Parallel.ForEach以及CancellationToken。
以上是关于Unity C# - 在完成之前停止执行IJobParallelFor的主要内容,如果未能解决你的问题,请参考以下文章
切割时从 csv 中删除列,并且 csvfilter 都在完成之前停止
Django Channels 从 Celery 任务发送组消息。 Asyncio 事件循环在所有异步任务完成之前停止