ios - 混淆线程和队列之间的技术术语

标签 ios multithreading data-structures multitasking

我是 iPhone 开发的新手。由于专注于开发多线程应用程序,我引用了一些 Apple 文档和其他解释线程和多线程概念的文档。但就工作队列而言,我在理解线程、任务和队列之间的关系时感到困惑。一些文档说,一个线程可以有多个任务,这些任务存储在队列中,因此每个线程都可以有自己的队列。然而,有人说,线程本身存储在队列中。

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

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

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

其次,我也读过这样的东西:

Another advantage of using a thread pool over creating a new thread for each task is thread creation and destruction overhead is negated.

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

最佳答案

我现在清楚了。

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

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

关于ios - 混淆线程和队列之间的技术术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25722452/

相关文章:

ios - 防止弹出框显示过度呈现的 View

c# - 为什么 Thread.Sleep 如此有害

c++ - 细粒度锁定

python - "subprocess.Popen().readline()"在多线程python中无法返回

java - 如何在 Java 中表示二维矩阵?

algorithm - 《算法设计手册》中数据结构实践的最优解

ios - 如何使 UITableView 高度适合其在 Swift 中的内容

javascript - PhoneGap for iOS 中的通知

ios - 如何通过快速点击 Collection View 的单元格来重新加载 TableView 中的数据

data-structures - 收件箱的Redis数据结构设计