与Thread和Queue之间的技术术语混淆

时间:2014-09-08 10:43:58

标签: ios multithreading data-structures multitasking

我是iPhone开发的新手。我专注于开发多线程应用程序,我已经提到了一些Apple文档以及其他解释线程和多线程概念的文档。但就工作队列而言,我很难理解Thread,Task和Queue之间的关系。一些文档说,一个线程可以有多个任务,那些任务存储在队列中,因此每个线程可以有自己的队列。然而,有些人说,线程本身存储在队列中。

我的问题是,我们可以说:

(1)线程可以有多个任务,这些任务在该线程的队列中存储和管理。

OR

(2)线程本身在队列中存储和管理。

其次,我也读过这样的话:

  

使用线程池而不是为每个任务创建新线程的另一个好处是线程创建和销毁开销被否定。

是工作队列的线程池同义词吗?

1 个答案:

答案 0 :(得分:1)

我现在很清楚。

线程和队列是完全不同的东西。线程是单独的执行代码,而队列是用于维护任务的数据结构。一个线程可以有多个任务,并且可以为 Process 的特定目标创建所有线程。一个线程在内存中有自己的空间用于变量和其他东西。

因此,在多线程编程中,队列是一种处理要执行的任务序列的机制。队列始终按顺序执行任务。但是,如果我们想要同时执行任务,我们必须创建并发队列。因此,可以同时执行多个队列以使多道程序编程受益。使用最新的API,如何安排这些任务是操作系统的最佳选择。任务可能会也可能不会在单独的线程上执行。结构总是取决于我们的要求。