Objective c 线程可以与队列类似地使用,还是它们意味着不同的东西?

Objective c 线程可以与队列类似地使用,还是它们意味着不同的东西?,objective-c,multithreading,swift,concurrency,grand-central-dispatch,Objective C,Multithreading,Swift,Concurrency,Grand Central Dispatch,我正在阅读一本很棒的教程,这时我看到了以下内容(作为背景:我们正在学习如何使用dispatch\u apply替换for循环并同时下载照片): 请注意,尽管您有以线程安全方式添加照片的代码,但图像的顺序可能会有所不同,具体取决于哪个线程首先完成 不知什么原因,这句台词真的把我吓坏了。我认为dispatch\u apply将在一个并发线程上运行任务,即GlobalUserInitiatedQueue,而不是多个不同的线程。他称该方法为: dispatch_apply(addresses.coun

我正在阅读一本很棒的教程,这时我看到了以下内容(作为背景:我们正在学习如何使用
dispatch\u apply
替换
for
循环并同时下载照片):

请注意,尽管您有以线程安全方式添加照片的代码,但图像的顺序可能会有所不同,具体取决于哪个线程首先完成

不知什么原因,这句台词真的把我吓坏了。我认为
dispatch\u apply
将在一个并发线程上运行任务,即
GlobalUserInitiatedQueue
,而不是多个不同的线程。他称该方法为:

 dispatch_apply(addresses.count, GlobalUserInitiatedQueue) {
GlobalUserInitiatedQueue
是一个线程,多个线程,线程和队列之间的区别是什么?从表面上看,它们被类似地使用。这是否意味着一个并发队列有多个线程同时运行

谢谢——

来自指南:

“并发队列(也称为一种全局调度队列) 同时执行一个或多个任务,但任务仍在中启动 将它们添加到队列的顺序。当前 正在执行的任务在由管理的不同线程上运行 调度队列。在任何给定点执行的任务的确切数量 是可变的,取决于系统条件。”

再清楚不过了。多线程,按队列上任务的顺序开始,但不按特定顺序结束


我喜欢教程和材料,目的是解释的东西非常详细。然而,当我有疑问时,我总是回到苹果的官方文档中。

哇,这太完美了!谢谢因此,多个线程在同一队列上运行!另一行说,“所有调度队列本身都是线程安全的,因为您可以同时从多个线程访问它们。”他这样说的确切含义是什么?队列的结构在被修改和读取时被锁定。基本上,在入队和出队操作上都有一个互斥锁。啊哈!再次感谢约翰!现在看一下文档,就像你说的,它就在那里D“调度队列本身是线程安全的。换句话说,您可以从系统上的任何线程将任务提交到调度队列,而无需先锁定或同步对队列的访问。”谢谢John!我还有一个问题,今晚我就要结束了: