4

我想知道 c / cocoa 中的块是否在主线程的单独线程上运行。它们对于执行计算量大的代码同时让 UI 保持响应是否有用?

4

3 回答 3

13

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

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

于 2010-12-02T12:10:28.127 回答
1

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

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

于 2010-12-02T12:12:54.660 回答
1

您可以使用GCD安排块以在其他线程上发布。两者是一起介绍的,所以任何关于一个的讨论通常都会提到另一个。然而,块本身并不是一种多线程机制。

于 2010-12-02T12:14:14.473 回答