一、併發數
(1)併發數:同時執行的任務數.比如,同時開3個執行緒執行3個任務,併發數就是3
(2)最大併發數:同一時間最多只能執行的任務的個數。
(3)最大併發數的相關方法
- (nsinteger)maxconcurrentoperationcount;
- (void)setmaxconcurrentoperationcount:(nsinteger)cnt;
說明:如果沒有設定最大併發數,那麼併發的個數是由系統記憶體和cpu決定的,可能記憶體多久開多一點,記憶體少就開少一點。
注意:num的值並不代表執行緒的個數,僅僅代表執行緒的id。
二、佇列的取消,暫停和恢復
(1)取消佇列的所有操作
- (void)cancelalloperations;
提:也可以呼叫nsoperation的- (void)cancel法取消單個操作
(2)暫停和恢復佇列
- (void)setsuspended:(bool)b; // yes代表暫停佇列,no代表恢復佇列
- (bool)issuspended; //當前狀態
三、操作優先順序
(1)設定nsoperation在queue中的優先順序,可以改變操作的執優先順序
- (nsoperationqueuepriority)queuepriority;
- (void)setqueuepriority:(nsoperationqueuepriority)p;
(2)優先順序的取值
nsoperationqueuepriorityverylow = -8l,
nsoperationqueueprioritylow = -4l,
nsoperationqueueprioritynormal = 0,
nsoperationqueuepriorityhigh = 4,
nsoperationqueuepriorityveryhigh = 8
說明:優先順序高的任務,呼叫的機率會更大。
四、操作依賴
(1)nsoperation之間可以設定依賴來保證執行順序,如一定要讓操作a執行完後,才能執行操作b,可以像下面這麼寫
[operationb adddependency:operationa]; // 操作b依賴於操作
(2)可以在不同queue的nsoperation之間建立依賴關係
注意:不能迴圈依賴(不能a依賴於b,b又依賴於a)。
(3)**示例
1 #import "yyviewcontroller.h" 2 3 @inte***ce yyviewcontroller () 4 5 @end 6 7 @implementation yyviewcontroller 8 9 - (void)viewdidload10 21 }];22 [operation3 addexecutionblock:^26 }];27 28 //設定操作依賴29 //先執行operation2,再執行operation1,最後執行operation330 [operation3 adddependency:operation1];31 [operation1 adddependency:operation2];32 33 //不能是相互依賴34 // [operation3 adddependency:operation1];35 // [operation1 adddependency:operation3];36 37 //建立nsoperationqueue38 nsoperationqueue * queue=[[nsoperationqueue alloc]init];39 //把操作新增到佇列中40 [queue addoperation:operation1];41 [queue addoperation:operation2];42 [queue addoperation:operation3];43 }44 45 -(void)test146 50 }51 52 -(void)test253 57 }58 59 @end列印檢視:
a做完再做b,b做完才做c。
注意:一定要在新增之前,進行設定。
5.操作的監聽
可以監聽乙個操作的執行完畢
- (void (^)(void))completionblock;
- (void)setcompletionblock:(void (^)(void))block;
**示例
第二種方式:
列印檢視:
說明:在上乙個任務執行完後,會執行operation.completionblock=^{}**段,且是在當前執行緒執行(2)。
iOS開發 多執行緒篇 多執行緒介紹
一 程序和執行緒 1 什麼是程序 程序是指在系統中正在執行的乙個應用程式 每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內 比如同時開啟迅雷 xcode,系統就會分別啟動2個程序 通過 活動監視器 可以檢視mac系統中所開啟的程序 3 執行緒的序列 1個執行緒中任務的執行是序列的 ...
iOS開發多執行緒篇 執行緒安全
一 多執行緒的安全隱患 資源共享 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題 示例一 示例二 問題 1 2 05 執行緒安全4 5 6 7 89 10 im...
iOS開發多執行緒篇 執行緒安全
ios開發多執行緒篇 執行緒安全 一 多執行緒的安全隱患 資源共享 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題 示例一 示例二 問題 1 2 05 執行緒安...