回答

5

我使用pthread來控制,性能好,便於攜帶。有時,您可能會選擇使用NSThread作爲其提供的額外NSObject接口。

有幾個較低級別的接口,您需要將線程與您使用的API(例如實時I/O或渲染)進行協調。有時你對使用的線程有靈活性,有時在這種情況下使用NSThread很方便,所以你可以很容易地在這些接口上使用CF或NS運行循環。因此,您在線程上設置的運行循環參數可能比API本身更感興趣。在這些情況下,GCD可能不一定是替代方案。

但是......大多數開發者不需要經常下降到這些水平。

2

可能會出現一些特殊情況,您必須執行一些GCD無法做到的奇怪事情。但是任何你可以用GCD做的事都應該這樣做(GCD和線程並不相互排斥,如果你需要實際使用一個線程,你不需要改變你已有的GCD)。

但是不確定會是什麼情況。也許如果你需要設置一個輔助的專用RunLoop(不確定它是否可以用GCD完成,但它肯定可以用一個線程來完成)。或者可能還有其他一些特殊情況我現在無法確定。

3

您幾乎從不需要直接在OS X或iOS上使用NSThread/pthread API。在其他平臺上,可能是(儘管GCD正越來越多地被移植到* BSD,Linux甚至Windows - 請參閱Grand Central Dispatch的維基百科頁面),但在Apple OS平臺上,您幾乎總是可以通過允許系統爲你做線程生命週期管理。你可能想要做自己的線程管理的唯一情況是在高度實時的情況下,你需要管理線程優先級並通過平衡每個線程正在進行的工作量來直接控制線程延遲。

相關問題