1. 程式人生 > >IOS多執行緒之NSoperation和GCD的比較

IOS多執行緒之NSoperation和GCD的比較

GCD是基於c的底層api,NSOperation屬於object-c類。iOS首先引入的是NSOperation,IOS4之後引入了GCD和NSOperationQueue並且其內部是用gcd實現的。

相對於GCD:

1,NSOperation擁有更多的函式可用,具體檢視api。

2,在NSOperationQueue中,可以建立各個NSOperation之間的依賴關係。

3,有kvo,可以監測operation是否正在執行(isExecuted)、是否結束(isFinished),是否取消(isCanceld)。

4,NSOperationQueue可以方便的管理併發、NSOperation之間的優先順序。

GCD主要與block結合使用。程式碼簡潔高效。

GCD也可以實現複雜的多執行緒應用,主要是建立個個執行緒時間的依賴關係這類的情況,但是需要自己實現相比NSOperation要複雜。

NSOperationQueue
NSOperationQueue的佇列型別

主佇列

[NSOperationQueue mainQueue]

凡是新增到主佇列中的任務(NSOperation),都會放到主執行緒中執行

非主佇列(其他佇列)

[[NSOperationQueue alloc] init]

同時包含了:序列、併發功能

新增到這種佇列中的任務(NSOperation),就會自動放到子執行緒中執行

GCD
1 - 主要與block結合使用。程式碼簡潔高效。

2 - GCD也可以實現複雜的多執行緒應用,主要是建立個個執行緒時間的依賴關係這類的情況,但是需要自己實現相比NSOperation要複雜。具體使用哪個,依需求而定。

GCD的佇列型別

併發佇列

全域性

自己建立的

序列佇列

主佇列

自己建立的