我想知道c / cocoa中的块是否在与主线程分开的线程上运行。它们是否有助于执行计算代价昂贵的代码,同时让UI响应?
答案 0 :(得分:13)
块只是绑定到可调用对象的代码片段。它们如何运行完全取决于调用它的代码。
不仅可以在单独的线程上运行块,而且正是引入块概念的原因。它支持Grand Central Dispatch,它隐藏了面向任务的模型背后的并发编程的复杂性。
答案 1 :(得分:1)
他们不必在另一个线程上运行,但他们可以。您可以在NSOperationQueues或GCD队列上安排它们,这些队列可以由后台线程排出。
是的,这可能是一个有用的结构,可以帮助您从主线程中获得耗时的工作。但并不是所有的块都有用,相反,你可以使用或不使用块进行后台处理。
答案 2 :(得分:1)
您可以使用GCD来计划在其他线程上发布的块。这两个是一起介绍的,所以对这个的讨论通常会提到另一个。但是,块本身并不是多线程机制。