多執行緒之 NSOperation 基礎用法

王小樹發表於2016-06-29

一、概念

NSOperation是一個多執行緒任務。NSOperation有NSInvocationOperation、NSBlockOperation兩個子類。

NSOperationQueue負責管理多個NSOperation,它是個FIFO佇列,會按順序啟動執行緒執行NSOperation任務。

二、用法

NSOperation實現多執行緒有兩個方式,一個是直接使用NSInvocationOperation、NSBlockOperation兩個子類,一個是自己實現NSOperation的子類。在平時的開發中掌握第一種的使用基本上能夠應對大部分多執行緒需求。這裡主要講解第一種使用

一、直接使用NSInvocationOperation和NSBlockOperation

NSInvocationOperation 是通過方法實現的形式完成多執行緒任務。

NSInvocationOperation*invocationOperation = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(invocationOperationAction)object:nil];

NSBlockOperation是通過程式碼塊的形式完成多執行緒任務。

NSBlockOperation*blockOperation = [NSBlockOperationblockOperationWithBlock:^{

}];

執行任務有兩個方式,一個是用start方法 一個是提交到NSOperationQueue, 用start 方法時與主執行緒同步,有阻塞主執行緒的情況,提交到NSOperationQueue中與主執行緒是非同步,不會阻塞到主執行緒。

NSOperationQueue可以通過maxConcurrentOperationCount設定執行緒最大並行數量,為1的時候相當於序列,大於1時為併發。

Talk is Cheap,show you the code:

三、總結

1、有NSBlockOperation 和 NSInvocationOperation 兩種方式實現多執行緒任務;

2、有兩種方式執行任務 :一個是start方法,一個是提交到NSOperationQueue,前者是同步,後者是非同步。

3、NSOperationQueue可以通過設定最大執行緒併發數量來決定序列或併發。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

多執行緒之 NSOperation 基礎用法 多執行緒之 NSOperation 基礎用法

相關文章