Runloop(二)Runloop 的使用

run loop object提供了用于将input sourcestimersrun-loop observers添加到你的run loop然后运行它的主接口。每个线程都有一个与之关联的run loop object。在Cocoa中,这个对象是NSRunLoop类的一个实例。在低级应用程序(low-level application)中,它是一个指向CFRunLoopRef不透明类型的指针。

阅读更多
Threads(七)远离线程

有许多方法可以使现有的线程代码适合于利用Grand Central Dispatchoperation objects。尽管并非在所有情况下都可能远离线程,但是在你进行切换的地方,性能(以及代码的简单性)可能会显着提高。具体来说,使用dispatch queuesoperation queues代替线程具有多个优点:

阅读更多
Threads(六)GCD - Dispatch Sources

每当与底层系统交互时,你都必须为该任务花费大量时间做好准备。调用内核层或其他系统层涉及到上下文的更改,与在你自己的进程中发生的调用相比,该更改相当昂贵。因此,许多系统库提供异步接口,允许你的代码向系统提交请求,并在处理该请求的同时继续执行其他工作。Grand Central Dispatch基于此一般行为,允许你提交请求,并使用blocksdispatch queues将结果报告回代码。

阅读更多
Threads(五)GCD - Dispatch Queues

Grand Central Dispatch(GCD) 调度队列(dispatch queues)是执行任务的强大工具,它使你可以相对于调用者异步或同步地执行任意代码块。适用于 ios 4.0+

阅读更多
Threads(四)Operation Queues
  • Cocoa operations是一种面向对象的方式,用于封装要异步执行的工作。

  • Operation被设计成可以与operation queue一起使用,也可以单独使用。

阅读更多
Threads(三)并发编程

了解并发编程

为什么需要并发编程?

Concurrency(并发性)是指多个事情同时发生的概念。随着多核CPU的激增,以及意识到每个处理器中的核心数量只会增加,软件开发人员需要新的方法来利用它们。

阅读更多
Threads(二)创建线程

当应用程序生成一个新线程时,该线程成为应用程序进程空间中的一个独立实体。每个线程都有自己的执行栈,并由内核分别计划在运行时运行。

阅读更多
Threads(一)线程概述

随着单个处理器的速度开始达到实际极限,芯片制造商转向了多核设计,这为计算机提供了同时执行多个任务的机会。尽管系统会尽可能利用这些核心来执行system-related tasks(系统相关的任务),但是我们的App可以通过threads利用它们。

阅读更多
Runloop(一)概念

概述

  • run loop是与线程相关联的基础架构的一部分。

  • run loop是一个处理事件的循环(event processing loop),用于 schedule work(调度工作) 和 协调传入事件的接收。

阅读更多
Block
  • Block 对象是一个C语言层级的语法和 runtime 的特性。

  • Block 类似于标准C函数,但除了可执行代码外,它还可能包含了自动(栈stack)或托管(堆heap)的内存所绑定的变量。因此,Block 可以保存一组状态(数据),当执行它时可以使用这些状态(数据)来影响行为。

阅读更多