ios執行緒 建立及通訊

2021-07-04 17:41:03 字數 1593 閱讀 8950

建立、啟動執行緒;

(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...