2010-12-02 40 views
4

我想知道c/cocoa中的塊是否在單獨的線程上運行到主線程。它們對於執行計算代價很高的代碼有用嗎,而讓UI響應?塊和線程

+0

那麼,關於C還是Objective-C呢? – 2010-12-02 12:09:34

+0

我認爲這取決於你如何調用該塊... – 2010-12-02 12:12:43

+0

@Let_Me_Be有趣的問題......從技術上講,它們是在C級實現的,但我只見過它們用於Objective-C。 – 2010-12-02 12:15:51

回答

13

塊只是代碼捆綁到一個可調用對象中的片段。他們如何運行完全取決於調用它的代碼。

在單獨的線程上運行塊不僅是可能的,而且正是塊概念引入的原因。它支持Grand Central Dispatch,它在面向任務的模型背後隱藏了許多併發編程的複雜性。

1

他們不必在另一個線程上運行,但他們可以。您可以將它們安排在NSOperationQueues或GCD隊列中,這些隊列可以通過後臺線程進行排序。

是的,這可以是一個有用的構造,以幫助您從主線程中獲得耗時的工作。但這不是所有塊都有用的,相反,您可以使用或不使用塊進行後臺處理。

1

您可以使用GCD安排在其他線程上發佈的塊。這兩個是一起介紹的,所以任何關於這個的討論通常都會提到另一個。然而,塊本身並不是一個多線程機制。