在串行队列中使用异步任务

4

能否在串行队列中添加异步任务?

我想知道如果您创建了一个串行队列并添加了一些异步任务,这个队列是否将这些异步任务视为同步任务?


不,它们将被视为异步任务。您无法控制它们何时开始或结束。如果您需要使多个异步任务依次运行,请使用信号量。 - Code Different
好的,谢谢。我想知道队列中的进入和离开是否等同于信号量中的发信号和等待? - rick
1个回答

1
一个串行队列会等待前一个操作完成。
从实际的文档中可以看到:

串行队列...按照添加到队列中的顺序逐个执行任务。当前正在执行的任务在由调度队列管理的不同线程上运行(可以根据任务而变化)。

您可以有“异步”运行的操作,但它们将是串行的。

enter image description here enter image description here

在图像示例中,“在某个线程上异步执行”将始终在“同步”之前打印,因为myQueue串行的

根据您的回答“串行队列...按照添加到队列中的顺序一次执行一个任务。”所以如果我们将异步任务添加到主要任务中,它应该为了“一次只执行一个任务”而冻结视图,直到完成该任务。但事实并非如此!@Durdu - Mehrdad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接