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

脱离线程

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

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

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

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

Concurrency and Application Design (一)的更多相关文章

  1. Concurrency and Application Design

    Concurrency and Application Design In the early days of computing, the maximum amount of work per un ...

  2. Concurrency and Application Design (三)

    Operation Queues operation object是 NSOperation class实例用来封装想要执行的任务.nsoperation class是抽象类必须子类化. NSInvo ...

  3. Concurrency and Application Design (二)

    Dispatch Queues dispatch queues 是基于c机制的一系列自定义任务操作.遵循先进先出的规则.每次只执行一个任务,直到上个任务完成才执行新的任务.相反的,并发的dispatc ...

  4. Azure Cloud Application Design and Implementation Guidance performance-optimization

    https://github.com/mspnp/azure-guidance https://github.com/mspnp/performance-optimization https://gi ...

  5. Concurrency Programming Guide 并发设计指引(二)

    以下翻译是本人通过谷歌工具进行翻译,并进行修正后的结果,希望能对大家有所帮助.如果您发现翻译的不正确不合适的地方,希望您能够发表评论指正,谢谢.转载请注明出处. Concurrency and App ...

  6. concurrencyProgrammingGuide 1

    thread用来表述执行代码的独立path.os x的线程执行基于POSIX 线程API. process用来表述一个运行操作,可以包含多个线程. task用来描述工作的抽象概念. Concurren ...

  7. 如何学习ios(摘自知乎https://www.zhihu.com/question/20016551)

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:Wang Hailong链接:https://www.zhihu.com/question/20016551/answer/1 ...

  8. A Pattern Language for Parallel Application Programming

    A Pattern Language for Parallel Application Programming Berna L. Massingill, Timothy G. Mattson, Bev ...

  9. Three Sources of a Solid Object-Oriented Design

    pingback :http://java.sys-con.com/node/84633?page=0,1 Object-oriented design is like an alloy consis ...

随机推荐

  1. 思维水题:UVa512-Spreadsheet Tracking

    Spreadsheet Tracking Data in spreadsheets are stored in cells, which are organized in rows (r) and c ...

  2. Linux学习-Shell的变量功能

    什么是变量? 简单的说,就是让某一个特定字串代表不固定的内容. 变量的可变性与方便性 举例来说,我们每个帐号的邮件信箱默认是以 MAIL 这个变量来进行存取的, 当 dmtsai 这个 使用者登陆时, ...

  3. 远程连接MYSQL8.0服务器问题

    title: 远程连接MYSQL8.0服务器问题 date: 2018-07-07 11:02:26 updated: tags: [MYSQL,坑] description: keywords: c ...

  4. luogu2123 皇后游戏

    好题. 网上看到的范围是:\(T \leq 10\),$ n \leq 50000$, $ a_i,b_i \leq 10^9$. 我们按照贪心惯常的思路考虑交换相邻的两个人.容易发现,对于相邻的两个 ...

  5. 谋哥:搞APP,做得累的都不对!

    最近谋哥(微信viyi88)我刚加入“秦王会”,思想收到猛烈地冲击,各位大佬的思维有时候会让我大脑短路,收获不少.同时,我也慢慢发现我一直平静的 心开始浮躁,我发现苗头不对,于是开始静下心来.静下心, ...

  6. 《完美应用Ubuntu》第3版 何晓龙 著

    系统篇 用好Ubuntu掌握这些就够了 第1章 Ubuntu的进化 1.1 GNU/Linux的历史和文化 1.1.1 GNU/Linux是Linux的全称 1.1.2 Linux的诞生 1.2 Li ...

  7. mysql-学习链接

    http://www.cnblogs.com/lyhabc/p/3691555.html

  8. ZOJ-3956 Course Selection System,01背包!

    Course Selection System 比赛的时候最后20分钟想到了是01背包,奈何没时间推出怎么背. 题意:n门课程,每门课程都有一个h值和c值,现在给出一个happy的定义,所选的课程的h ...

  9. BZOJ 4556 [Tjoi2016&Heoi2016]字符串 ——后缀数组 ST表 主席树 二分答案

    Solution 1: 后缀数组暴力大法好 #include <map> #include <cmath> #include <queue> #include &l ...

  10. 如何回答“线上CPU100%排查”面试问题

    案例: public class App { public static void main( String[] args ) { int a = 0; while (a < 100) { a ...