Concurrency and Application Design (一)

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

脱离线程

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

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

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

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

时间: 2024-10-12 05:33:04

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

Concurrency and Application Design (二)

Dispatch Queues dispatch queues 是基于c机制的一系列自定义任务操作.遵循先进先出的规则.每次只执行一个任务,直到上个任务完成才执行新的任务.相反的,并发的dispatch queue可以启动多个任务而不用等待其他任务执行完成. 提交给dispatch queue的任务必须是封装好的方法或者block 对象.dispatch queue是gcd技术的一部分. Dispatch Sources dispatch sources是基于c机制的异步系统事件.一个dispa

Concurrency and Application Design (三)

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

Azure Cloud Application Design and Implementation Guidance performance-optimization

https://github.com/mspnp/azure-guidance https://github.com/mspnp/performance-optimization https://github.com/mspnp/data-pipeline Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications https://msdn.microsoft.com/en-us/library

concurrencyProgrammingGuide 1

thread用来表述执行代码的独立path.os x的线程执行基于POSIX 线程API. process用来表述一个运行操作,可以包含多个线程. task用来描述工作的抽象概念. Concurrency and Application Design  不是依赖threads,os x和ios使用的是asynchronous design approach来解决并发的问题.异步函数在操作系统中已经使用多年用来初始化可能需要花费大量时间的task,比如从disk读取数据.当被调用的时候,异步函数会

Domain Driven Design and Development In Practice--转载

原文地址:http://www.infoq.com/articles/ddd-in-practice Background Domain Driven Design (DDD) is about mapping business domain concepts into software artifacts. Most of the writings and articles on this topic have been based on Eric Evans' book "Domain Dr

Learning JavaScript Design Patterns -- A book by Addy Osmani

Learning JavaScript Design Patterns A book by Addy Osmani Volume 1.6.2 Tweet Copyright © Addy Osmani 2015. Learning JavaScript Design Patterns is released under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 unported license. It

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 consisting of a solid grounding in the object-oriented (OO) approach and implementing the best OO practices heavily laced with how to sidestep the OO pitfal

Advanced Design System 2014.01 (64-bit Simulations)终于要得到lisence了,很期待2014版本可以使用

这几天一直在想着怎么破解Advanced Design System 2014.01  (64-bit Simulations),没有一点进展,有点失望,莫非正版软件必须要购买才能使用?有点想卸载的冲动,还不如装上Advanced Design System 2009呢?今天又试了一下,终于收到回复邮件,看到了希望 *******************************************************************************************

计算机会议排名等级

http://blog.sina.com.cn/s/blog_9c411c310102vs2g.html 附件是计算机领域的学术会议等级排名情况,分为A+, A, B, C, L 共5个档次.其中A+属于顶级会议,基本是这个领域全世界大牛们参与和关注最多的会议.国内的研究者能在其中发表论文的话,是很值得骄傲的成就.A类也是非常好的会议了,尤其是一些热门的研究方向,A类的会议投稿多录用率低,部分A类会议影响力逐步逼近A+类会议.B类的会议分两种,一种称为盛会级,参与的人多,发表的论文也多,论文录用