块和线程

时间:2010-12-02 12:06:50

标签: objective-c c objective-c-blocks

我想知道c / cocoa中的块是否在与主线程分开的线程上运行。它们是否有助于执行计算代价昂贵的代码,同时让UI响应?

3 个答案:

答案 0 :(得分:13)

块只是绑定到可调用对象的代码片段。它们如何运行完全取决于调用它的代码。

不仅可以在单独的线程上运行块,而且正是引入块概念的原因。它支持Grand Central Dispatch,它隐藏了面向任务的模型背后的并发编程的复杂性。

答案 1 :(得分:1)

他们不必在另一个线程上运行,但他们可以。您可以在NSOperationQueues或GCD队列上安排它们,这些队列可以由后台线程排出。

是的,这可能是一个有用的结构,可以帮助您从主线程中获得耗时的工作。但并不是所有的块都有用,相反,你可以使用或不使用块进行后台处理。

答案 2 :(得分:1)

您可以使用GCD来计划在其他线程上发布的块。这两个是一起介绍的,所以对这个的讨论通常会提到另一个。但是,块本身并不是多线程机制。