我试图了解为后台线程任务创建Serial Dispatch Group的正确方法。例如:
我有一个视频,我想分成5个部分。所以理论上这将是队列周期:
AVAssetExportSession
AVAssetExportSession
我一直在挖掘有关此问题的教程,但我找不到合适的方法来实现这一目标。
任何帮助都会被高度评价!
最诚挚的问候,Roi
答案 0 :(得分:2)
如果要并行和串行处理任务并且最后一项任务不清楚,则通过组进行同步非常有用。但你的问题完全是串行的。
为什么不将串行队列用于您的目的?您可以将五个块添加到该队列,它们将按所需顺序执行。您也可以通过在后台运行的单个块来解决您的问题。
答案 1 :(得分:2)
没有"串行调度组"。串行/并发是队列的属性,而不是组的属性。
鉴于AVAssetExportSession
本身就是一个异步过程,将它添加到串行队列的简单尝试将无法工作。两种方法似乎合乎逻辑你可以:
您可以将exportAsynchronously(completionHandler:)
包装在异步自定义Operation
子类中。然后,您可以将这五个操作添加到串行操作队列中。如果需要,您可以为它们提供单独的完成块。和/或然后您可以根据这五个操作进行完成操作。
或
您可以编写一个执行请求i
的递归函数,并且在其完成处理程序中,您可以让它为i + 1
调用自身。它只需要检查是否i < 5
(或其他)。