多线程 – 在Grand Central Dispatch中使用术语“队列”,“多核
我正在努力摆脱大中央派遣的概念.我想了解Vandad关于并行编程的书中的这些引号.
和
最后
我已经大胆的关键词. 多个核心是否与队列相同?队列是否包含许多线程?每个线程是否执行任务? 解决方法
不是真的.队列是一种编程抽象,核心是处理器中的物理资源.在队列和核心之间没有唯一的关系,尽管在任何给定的时间点,可以说给定的队列正在给定的核心上执行给定的任务.
队列由任务组成.当执行该任务的时候,任务被队列管理系统分配给线程.线程是操作系统资源,并分配给内核,它们有效地运行它们,并且没有任务的概念(超线程CPU除外). 如果您不考虑硬件多线程(例如,超线程),则在任何给定的时间点核心运行特定线程;当运行不同线程的时候,该核心中会发生上下文切换.如果您考虑了硬件多线程,则可以在同一物理内核中托管的虚拟核心上运行多个线程. 队列和线程之间的关系是不透明的.队列可以一次管理多个线程,或者一次一次管理多个线程,或者一次只能管理一个线程;在第一种情况下,您有一个并行队列,能够在并发线程上执行并行任务;在第二和第三种情况下,您有一个串行队列.
在任何给定的时间点,线程正在执行任务.你可以有线程生成,执行任务,死亡;或者可以执行多个任务的长时间运行的线程(即主线程). 也许在开始时很令人费解,您可能需要一些关于操作系统的阅读,也可能需要阅读高级处理器架构来充分理解这一点. GCD旨在让您以抽象的方式完全理解:即在任务和排队方面,忘记线程和内核,被视为一种“实现方式”,或者是您可以留下的低级细节系统高效使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |