iOS 中的并发队列使用序列化目标队列

Use of serialized target queues for Concurrent queues in iOS

我正在浏览这个优秀的博客 post (http://www.humancode.us/2014/08/14/target-queues.html) iOS 中的目标线程数,我不禁想知道为什么我们需要这样的机制。在示例中,我们为自定义并发队列指定序列化目标队列。我们不能通过在序列化队列中执行原始并发队列中的块来实现同样的目标吗?

并发队列的序列化目标队列有什么意义????

如果我没听错,你是在问为什么有人会在并发队列上启动串行任务。

如果大多数具有某些资源的任务可以同时执行(又名同时执行),但某些任务本质上与其他任务同时执行是不安全的,那么您将需要这种行为。

最常见的例子是readers/writers问题。例如,您正在访问文件系统的某些资源。甚至可以从不同的线程读取它 - 每个 reader 都会得到它所需要的。但是这里有必要更新该文件的内容。在有人阅读它时修改它会导致无法预料的结果 - reader 不能保证获得正确的、预期的信息(部分来自旧版本,部分来自新版本)。更糟糕的是 - 可能有两个编写器(如果文件内容由应用程序用户和通过网络从某些中央存储更改) - 结果将是两个版本的疯狂混合(实际上,它现在甚至可能已损坏)

每个写手都必须等到所有其他任务执行完毕(没有人读,没有人写),每个 reader 必须等到没有写任务发生(没有人写,没有人写)不管有多少 readers)

维基百科上有关于这一篇的好文章。我没有 运行 进入任何其他实际情况,你会需要它,但我相信还有更多。

希望它能回答您的问题