run loop object
提供了用于将input sources
、timers
和 run-loop observers
添加到你的run loop
然后运行它的主接口。每个线程都有一个与之关联的run loop object
。在Cocoa
中,这个对象是NSRunLoop
类的一个实例。在低级应用程序(low-level application
)中,它是一个指向CFRunLoopRef
不透明类型的指针。
run loop object
提供了用于将input sources
、timers
和 run-loop observers
添加到你的run loop
然后运行它的主接口。每个线程都有一个与之关联的run loop object
。在Cocoa
中,这个对象是NSRunLoop
类的一个实例。在低级应用程序(low-level application
)中,它是一个指向CFRunLoopRef
不透明类型的指针。
有许多方法可以使现有的线程代码适合于利用Grand Central Dispatch
和operation objects
。尽管并非在所有情况下都可能远离线程,但是在你进行切换的地方,性能(以及代码的简单性)可能会显着提高。具体来说,使用dispatch queues
和operation queues
代替线程具有多个优点:
每当与底层系统交互时,你都必须为该任务花费大量时间做好准备。调用内核层或其他系统层涉及到上下文的更改,与在你自己的进程中发生的调用相比,该更改相当昂贵。因此,许多系统库提供异步接口,允许你的代码向系统提交请求,并在处理该请求的同时继续执行其他工作。Grand Central Dispatch
基于此一般行为,允许你提交请求,并使用blocks
和dispatch queues
将结果报告回代码。
Grand Central Dispatch(GCD)
调度队列(dispatch queues
)是执行任务的强大工具,它使你可以相对于调用者异步或同步地执行任意代码块。适用于 ios 4.0+
。
Cocoa operations
是一种面向对象的方式,用于封装要异步执行的工作。
Operation
被设计成可以与operation queue
一起使用,也可以单独使用。
随着单个处理器的速度开始达到实际极限,芯片制造商转向了多核设计,这为计算机提供了同时执行多个任务的机会。尽管系统会尽可能利用这些核心来执行system-related tasks
(系统相关的任务),但是我们的App可以通过threads
利用它们。
run loop
是与线程相关联的基础架构的一部分。
run loop
是一个处理事件的循环(event processing loop
),用于 schedule work
(调度工作) 和 协调传入事件的接收。