IOS多執行緒之NSoperation和GCD的比較
阿新 • • 發佈:2018-11-12
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的佇列型別
併發佇列
全域性
自己建立的
序列佇列
主佇列
自己建立的