在计算机发展的早期,单位工作时间的最高限额是一台计算机可以执行通过CPU的时钟速度确定。但是,随着技术的进步和处理器设计变得更紧凑,热等物理约束开始限制处理器的最高时钟速度。因此,芯片制造商寻找其它的方法来提高其芯片的整体性能。该解决方案是它们增加每个芯片上的处理器核的数量。通过增加核的数量,在单个芯片可以在不增加CPU速度或改变每秒执行更多的指令芯片尺寸和热特性。唯一的问题是如何利用其他核。

脱离线程

虽然线程已经存在了很多年,继续有其用途,他们不解决在一个可扩展的方式执行多个任务的普遍问题。使用线程,创建一个可扩展解决办法落在了开发者的身上。你必须决定创建多少线程并且根据系统变化动态调整数量。另一个问题是,你的应用程序承担大多数创建和维护线程需要的成本。而不是依赖于线程,Mac OS X和iOS采取异步设计方法来解决并发问题。异步函数已经存在于操作系统多年,并经常用于可能需要相当长时间的任务,例如从磁盘读取数据。在过去,如果一个异步函数,你想要做什么,根本不存在,你会写你自己的异步函数,并创建自己的线程。但现在,Mac OS X和iOS提供技术可以异步执行任何任务,而无需自己管理线程。

其中一个启动异步任务的技术就是GCG Grand Central Dispatch.这个技术将你通常会写到的线程管理代码移动到系统级别。你需要做的只是定义想执行的任务并把他添加到一个合适的分发队列中去。GCD负责创建需要的线程并将你的任务列入到这些线程中去。因为线程管理现在已经是系统的一部分,GCD为任务管理和执行提供整体的方法比传统线程更有效率。

执行队列是一些objective-c对象非常像分发队列。你定义好任务然后将他们添加到执行队列中,像gcd,执行队列operation queues掌握所有的线程管理,确保任务执行的又快又有效率。

下面就介绍一些关于分发队列,执行队列和一些其他相关异步技术。

最新文章

  1. 多点触摸(MT)协议(翻译)
  2. deepin 15.3添加PPA源 安装php5.6
  3. Hyper-V 上的android
  4. Java基础之创建窗口——颜色和光标(TryWindow4)
  5. hdu4609 3-idiots
  6. Understanding Convolutions【转】
  7. ha666_go运行环境配置
  8. MongoDB-固定集合 capped collection 操作 介绍
  9. ServletRequest中getReader()和getInputStream()只能调用一次的解决办法(转)
  10. instsrv.exe下载和使用方法(微软Windows Server 2003 Resource Kit Tools工具中的一个)
  11. 设置php在apache下加载ini配置文件路径,~和curl扩展无法加载的问题
  12. C语言之六大排序算法
  13. WCF 部署时,soap:address location 显示的是电脑名,而不是ip地址
  14. jquery的ajax全局事件详解
  15. python 远程调度进程服务与客户端
  16. 基于django的视频点播网站开发
  17. JavaScript变量提升的理解
  18. python显示进度条
  19. win2003 远程连接限制
  20. mysql中间件研究(Atlas,cobar,TDDL)[转载]

热门文章

  1. 搭建基于金山快盘的Git服务器
  2. Could not load file or assembly 'AjaxControlToolkit' or one of its dependencies
  3. day01_04.变量
  4. 如何安装mongodb.msi
  5. [python][oldboy]list append, extend
  6. spring scope 属性的取值
  7. iis上的反向代理
  8. 【bzoj4568】[Scoi2016]幸运数字 树上倍增+高斯消元动态维护线性基
  9. 北京集训TEST12——PA( Mortal Kombat)
  10. [USACO12DEC]第一!First! (Trie树,拓扑排序)