Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift “阿基特”;像素缓冲池“;,为什么它会冻结应用程序?_Swift_Multithreading_Arkit_Apple Vision - Fatal编程技术网

Swift “阿基特”;像素缓冲池“;,为什么它会冻结应用程序?

Swift “阿基特”;像素缓冲池“;,为什么它会冻结应用程序?,swift,multithreading,arkit,apple-vision,Swift,Multithreading,Arkit,Apple Vision,在关于在ARKit内执行计算机视觉任务的说明中,他们指出: 重要的 确保一次只处理一个缓冲区可确保良好的性能 演出相机回收有限的像素缓冲池,因此 保留太多的缓冲区进行处理可能会导致相机和内存不足 关闭捕获会话。将多个缓冲区传递给Vision以用于 处理会减慢每个图像的处理速度,增加延迟 以及减少渲染AR的CPU和GPU开销 可视化 在Swift中,我已经做了他们建议您不应该做的事情,在队列中保留多个缓冲区,以便在另一个线程中处理。果不其然,ARKit的性能受到了影响。ARKit帧仅在我从队列中取

在关于在ARKit内执行计算机视觉任务的说明中,他们指出:

重要的

确保一次只处理一个缓冲区可确保良好的性能 演出相机回收有限的像素缓冲池,因此 保留太多的缓冲区进行处理可能会导致相机和内存不足 关闭捕获会话。将多个缓冲区传递给Vision以用于 处理会减慢每个图像的处理速度,增加延迟 以及减少渲染AR的CPU和GPU开销 可视化

在Swift中,我已经做了他们建议您不应该做的事情,在队列中保留多个缓冲区,以便在另一个线程中处理。果不其然,ARKit的性能受到了影响。ARKit帧仅在我从队列中取出缓冲区时显示。我想更好地理解这背后的机制

ARKit如何知道缓冲区被保留?swift中是否有某种锁定机制