多线程 – 在Grand Central Dispatch中使用术语“队列”,“多核心”和“线程”

我正在努力摆脱大中央派遣的概念.我想了解Vandad关于并行编程的书中的这些引号.

The real use for GCD is to dispatch tasks to multiple cores,without making you the programmer,worry about which core is executing which task.

At the heart of GCD are dispatch queues. dispatch queues are pools of threads.

最后

You will not be working with these threads directly. You will just work with dispatch queues,dispatching tasks to these queues and asking queues to invoke your task.

我已经大胆的关键词.

多个核心是否与队列相同?队列是否包含许多线程?每个线程是否执行任务?

解决方法

So multiple cores are the same as queues?

不是真的.队列是一种编程抽象,核心是处理器中的物理资源.在队列和核心之间没有唯一的关系,尽管在任何给定的时间点,可以说给定的队列正在给定的核心上执行给定的任务.

A queue consists of many threads?

队列由任务组成.当执行该任务的时候,任务被队列管理系统分配给线程.线程是操作系统资源,并分配给内核,它们有效地运行它们,并且没有任务的概念(超线程cpu除外).

如果您不考虑硬件多线程(例如,超线程),则在任何给定的时间点核心运行特定线程;当运行不同线程的时候,该核心中会发生上下文切换.如果您考虑了硬件多线程,则可以在同一物理内核中托管的虚拟核心上运行多个线程.

队列和线程之间的关系是不透明的.队列可以一次管理多个线程,或者一次一次管理多个线程,或者一次只能管理一个线程;在第一种情况下,您有一个并行队列,能够在并发线程上执行并行任务;在第二和第三种情况下,您有一个串行队列.

Each thread performs a task?

在任何给定的时间点,线程正在执行任务.你可以有线程生成,执行任务,死亡;或者可以执行多个任务的长时间运行的线程(即主线程).

也许在开始时很令人费解,您可能需要一些关于操作系统的阅读,也可能需要阅读高级处理器架构来充分理解这一点.

GCD旨在让您以抽象的方式完全理解:即在任务和排队方面,忘记线程和内核,被视为一种“实现方式”,或者是您可以留下的低级细节系统高效使用.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...