建立、啟動執行緒;
(1) nsthread *thread = [[nsthread alloc] initwithtarget:self selector:@selector(run) object:nil];
(2)建立執行緒後自動啟動執行緒:
[nsthread detachnewthreadselector:@selector(run) totarget:self withobject:nil];
3)隱式建立並啟動執行緒:
[self performselectorinbackground:@selector(run) withobject:nil];//子執行緒在後台執行
獲得當前執行緒: nsthread *current = [nsthread currentthread];
+ (nsthread *)mainthread; // 獲得主線程
- (bool)ismainthread; // 是否為主執行緒
+ (bool)ismainthread; // 是否為主執行緒
執行緒的排程優先順序:排程優先順序的取值範圍是0.0 ~ 1.0,預設0.5,值越大,優先順序越高:
+ (double)threadpriority;
+ (bool)setthreadpriority:(double)p;
設定執行緒的名字:
- (void)setname:(nsstring *)n;
- (nsstring *)name;
執行緒間通訊常用方法:
//給主線程傳的方法名,引數,是否阻塞
- (void)performselectoronmainthread:(sel)aselector withobject:(id)arg waituntildone:(bool)wait;
//給指定執行緒傳的方法名
- (void)performselector:(sel)aselector onthread:(nsthread *)thr withobject:(id)arg waituntildone:(bool)wait;
waituntildone是yes的話,子執行緒結束後 會阻塞主線程 走callback方法
如果是no的話 就不會阻塞 主線程
@synchronized:加鎖
執行緒阻塞:
[nsthread sleepfortimeinterval:2.0];
//第二種設定執行緒阻塞2,以當前時間為基準阻塞4秒
nsdate *date=[nsdate datewithtimeintervalsincenow:4.0];
[nsthread sleepuntildate:date];
34 nsurl *urlstr=[nsurl urlwithstring:@"fdsf"];
3536
//把轉換為二進位制的資料
37 nsdata *data=[nsdata datawithcontentsofurl:urlstr];//
這一行操作會比較耗時
3839
//把資料轉換成
40 uiimage *image=[uiimage imagewithdata:data];
iOS執行緒通訊
什麼是執行緒間通訊 在乙個執行緒中,執行緒往往不是孤立存在的,多個執行緒之間需要經常進行通訊。執行緒間的通訊體現。1.乙個執行緒傳遞資料給另乙個執行緒 2.在乙個執行緒中執行完特定的任務後,轉到另1個執行緒繼續執行任務。執行緒之間的通訊常用方法 方法1 self performselectoronm...
iOS執行緒間通訊
什麼叫做執行緒間通訊?在1個程序中,執行緒往往不是孤立存在的,多個執行緒之間需要經常進行通訊 執行緒間通訊的體現 1個執行緒傳遞資料給另1個執行緒 在1個執行緒中執行完特定任務後,轉到另1個執行緒繼續執行任務 執行緒間通訊常用方法 void performselectoronmainthread s...
ios33 執行緒通訊
06 掌握 執行緒間通訊 atomic 為set方法加鎖,執行緒安全,需要消耗資源。nonatomic 不為set方法加鎖,非執行緒安全,適合記憶體小的移動裝置 import viewcontroller.h inte ce viewcontroller property weak,nonatomi...