Dispatch Queues

dispatch queues 是基于c机制的一系列自定义任务操作。遵循先进先出的规则。每次只执行一个任务,直到上个任务完成才执行新的任务。相反的,并发的dispatch queue可以启动多个任务而不用等待其他任务执行完成。

提交给dispatch queue的任务必须是封装好的方法或者block 对象。dispatch queue是gcd技术的一部分。

Dispatch Sources

dispatch sources是基于c机制的异步系统事件。一个dispatch source封装一个特定系统事件类型信息并且当有事件发生时,给dispatch queue提交指定的block对象或者方法。可以使用dispatch sources来映射如下类型的系统事件:

Timers

Signal handlers

Descriptor-related events

Process-related events

Mach port events

Custom events that you trigger

Dispatch sources 是gcd的一部分。

Operation Queues

operation queue 是同等意义的并发dispathc queuew执行类是NSOperationQueue.然而dispatch queue总是遵循先进先出的规则,operation queues当决定任务执行次序时总是考虑其他因素。这些因素中重要的一个是是否当前的任务依赖其他任务的完成。当定义任务时你指定依赖关系就可以创建比较复杂的执行顺序。

提交给operation queue的实例必须是NSOperation class实例。一个operation 对象是一个objective c对象封装了你想执行的任务和所有需要的数据。因为nsoperation class是一个抽象类,所以需要为任务自定义subclasses。

operation对象产生key-value观察者notifications。

Asynchronous Design Techniques

需要首先考虑是否真的需要实用并发机制。因为这个更复杂更难以调试。如果设计不当反而会降低代码的运行速度和反应速度。下面就是几个设计方面的建议供参考。

第一,需要首先列举出应用程序执行的任务和每个任务对应的数据结构和对象等。如果对象的修改不会影响到其他对象那么可以并发修改这些对象。

第二,如果更改任务执行顺序会改变结果,那么可能还会使用传统的串行步骤。如果更改顺序不会影响输出,那么就应该考虑并发执行任务。而且不用担心任务过大。

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 (一)

    在计算机发展的早期,单位工作时间的最高限额是一台计算机可以执行通过CPU的时钟速度确定.但是,随着技术的进步和处理器设计变得更紧凑,热等物理约束开始限制处理器的最高时钟速度.因此,芯片制造商寻找其它的 ...

  4. Android(Lollipop/5.0) Material Design(二) 入门指南

    Material Design系列 Android(Lollipop/5.0)Material Design(一) 简介 Android(Lollipop/5.0)Material Design(二) ...

  5. <Effective C++>读书摘要--Inheritance and Object-Oriented Design<二>

    <Item 36> Never redefine an inherited non-virtual function 1.如下代码通过不同指针调用同一个对象的同一个函数会产生不同的行为Th ...

  6. Java基础回顾Application(二)

    application对象 1 什么是application对象 ? (1) 当Web服务器启动时,Web服务器会自动创建一个application对象.application对象一旦创建,它将一直存 ...

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

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

  8. VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Kernel application (二)

    #1 内核对象的静态实例化 内核对象的静态实例化 任务的静态实例化 VX_TASK宏用来在编译时声明一个任务对象.该宏带有2个参数:任务名和栈大小.不像taskSpawn函数,任务名称可以是NULL. ...

  9. SpringBoot 配置文件 application.properties(二)

    mvc spring.mvc.async.request-timeout设定async请求的超时时间,以毫秒为单位,如果没有设置的话,以具体实现的超时时间为准,比如tomcat的servlet3的话是 ...

随机推荐

  1. POJ:2777-Count Color(线段树+状压)

    Count Color Time Limit: 1000MS Memory Limit: 65536K Description Chosen Problem Solving and Program d ...

  2. flask_关注者

    表的模型实现 class Follow(db.Model): __tablename__ = 'follows' follower_id = db.Column(db.Integer,db.Forei ...

  3. JBuilder生成Exe

    首先保证工程可以通过绿箭头执行 然后在File菜单中选择New,先建立Archive下的Application 接下来的界面中大部分可以直接选择“Next”,除了下面的第3步,会询问是否需要将工程引用 ...

  4. pycharm下搭建django开发环境

    在一次偶然的机会中,了解到万精油语言python,发现其流行程度发展迅速,于是也开始学习起来,正题. 1.安装python,查阅一些相关的资料及周边的开发工具,我选择python2(2.7.11),注 ...

  5. Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据

    发送字符串数据发送数据 string strId = "guest"; "; string postData = "userid=" + strId; ...

  6. MIME类型-服务端验证上传文件的类型

    MIME的作用 : 使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件. web服务器使用MIME来说明发送数据的种类, ...

  7. 深入浅出理解Javascript原型概念以及继承机制(转)

    在Javascript语言中,原型是一个经常被讨论到但是有非常让初学者不解的概念.那么,到底该怎么去给原型定义呢?不急,在了解是什么之前,我们不妨先来看下为什么. Javascript最开始是网景公司 ...

  8. [已解决] wordpress 修改 permalink 后 页面 404 问题

    功能说明 为了利于SEO优化,我们需要将地址设置为永久链接,在层级不要太深的情况下实现伪静态页面的目的,例如wordpress 默认页面地址为: https://www.ryanzoe.top/?p= ...

  9. 【IOI1998】Polygon 区间DP

    题意翻译 题目可能有些许修改,但大意一致 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符号+(加)或符号*(乘积)标记. 第一步,删除其中一条边 ...

  10. xml报错“cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element”

    配置使用dubbo时,xml报错“cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be ...