如果任务产生不同的线程,Serial DispatchQueue 会等待吗

Posted

技术标签:

【中文标题】如果任务产生不同的线程,Serial DispatchQueue 会等待吗【英文标题】:Will a Serial DispatchQueue wait if a task spawns a different thread 【发布时间】:2018-11-27 21:21:42 【问题描述】:

串行调度队列将一次执行一项任务。但是,如果队列中有 task1 和 task2 怎么办。 task1 开始执行并调用一个带有完成块的函数(我假设它将使用不同的线程来执行)。此时,我相信 task1 将退出,即使尚未调用完成块。 task2 是否有可能在 task 1 的完成块执行之前开始执行?

【问题讨论】:

【参考方案1】:

是的。在正常情况下,这正是会发生的事情。

如果您想等待某事完成后再继续,请研究 DispatchGroup。

【讨论】:

以上是关于如果任务产生不同的线程,Serial DispatchQueue 会等待吗的主要内容,如果未能解决你的问题,请参考以下文章

Serial 与 Parallel GC 之间的不同之处?

Linux进程管理与计划任务

详解C++多线程

JVM垃圾收集器

线程安全问题

线程池