ios - Swift 3 - 只有一个项目的队列

标签 ios swift queue

我正在使用 OpenCV 处理来自实时视频源的帧,处理过程非常密集。这可能需要 2-3 秒。在处理帧时忽略所有记录的帧是可以的。

基本上,我们在前台显示了连续的帧流。我们获取下一个可用帧并在后台处理它。在此帧处理的接下来 2-3 秒内,我希望接下来的所有帧继续不间断地显示在前景中。我不需要处理这些。但是,一旦背景帧完成,我想抓取最新的可用帧并将其发送出去进行处理。

我是 Swift 队列的新手。我认为这是我应该查看的队列,任何人都可以指出正确的方向吗?

最佳答案

可能最简单的是使用后台 DispatchQueue。异步处理帧,然后切换回主队列以显示结果并递归调用函数,直到您决定停止。切换回主线程以进行任何 UI 更新尤为重要。

func processNextAvailableFrame() {
    DispatchQueue.global(qos: .background).async {
        // Grab a frame to process
        // Process frame

        DispatchQueue.main.async {
            // Back on main thread, show result of processing frame
            // Call processFrame() again, as needed.
            let shouldKeepGoing = true // determine this somehow
            if shouldKeepGoing {
                self.processNextAvailableFrame()
            }
        }
    }
}

关于ios - Swift 3 - 只有一个项目的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44768472/

相关文章:

iOS 锁定事件委托(delegate)?

ios - 推送 viewController 并保持 webView 状态 ios

ios - 带有左右栏项目的中心导航栏标题?

c++ - for循环只循环3次

ios - 如何检测 UIWebView View 布局的完成

ios - UISearchController - 不能很好地使用 subview Controller

ios - SwiftUI View 无需输入自动滚动到底部

ios - 如何从字符串 Swift 3 获取 ALAssetURL?

php - Laravel 队列进程超时错误

php - 将 Redis 用于超时队列或排行榜