iOS開發 多執行緒簡介

2021-09-22 09:30:57 字數 2271 閱讀 9470

多執行緒從概念上理解是指從軟體或者硬體上實現多個執行緒併發執行的技術,簡單點理解就是同一時間可以執行多個事情(比如說一邊聽歌一邊碼**),聽歌是乙個執行緒,碼**是乙個執行緒,如果是單核cpu的話,上面兩個動作其實可以確切的理解為併發,也就是偽並行,只是兩者相差的時間太快沒有察覺。電腦現在一般都是雙核的或者四核的,比以往的運算能有提高了不少,ios中六種可以選擇的操作執行緒的方式,具體方式如下:

ios和os x執行緒的底層實現機制是mach執行緒,我們基本不會處理執行緒到這個級別,一般應用中可以使用的執行緒管理技術有cocoa threads,posix threads,mulitprocessing services,通過我們選擇實戰的方式就是cocoa threads。

ios和os x中的應用可以是單執行緒也可以是多執行緒的,ios的應用相當於乙個pc上常說的程序,可以擴充套件子執行緒,擴充套件出來的子執行緒擁有可執行的棧和執行時排程在記憶體中。執行緒可以與其他執行緒或者程序之間通訊,一般都是通過i/o讀寫操作或者其他你需要的方式。同乙個應用中的執行緒擁有同樣的虛擬記憶體空間和訪問應用程式程序的權利,簡單理解可以理解為在方法中可以訪問全域性變數。網上很多文章都討論多執行緒,不過很少說一些具體執行緒的分配的空間,一下也是本人從蘋果官網找的一張關於執行緒空間分配的:

建立底層執行緒是相對簡單的,不過乙個必要的條件就是必須有乙個函式或方法作為執行緒的主要入口點,這樣我們就可以簡單的例項化乙個nsthread執行緒來展示一下效果,nsthread有兩種例項方法: 1

2

3

4

5

nsthread*mythread = [[nsthreadalloc] initwithtarget:self

selector:@selector(methodtask)

object:nil];

[nsthreaddetachnewthreadselector:@selector(methoddetachtask) totarget:selfwithobject:nil];

呼叫方法: 1

2

3

4

5

6

-(void)methodtask

-(void)methoddetachtask

引數解釋:

selector :執行緒執行的方法,這個selector只能有乙個引數,而且不能有返回值。

target  :selector訊息傳送的物件

argument:傳輸給target的唯一引數,也可以是nil;

如果你當前主線程正在執行,你想傳送訊息給主線程,可以通過

performselectoronmainthread執行: 1

[selfperformselectoronmainthread:@selector(maintask) withobject:nilwaituntildone:yes];

呼叫方法:

1

2

3

-(void)maintask

iOS開發 多執行緒簡介

多執行緒從概念上理解是指從軟體或者硬體上實現多個執行緒併發執行的技術,簡單點理解就是同一時間可以執行多個事情 比如說一邊聽歌一邊碼 聽歌是乙個執行緒,碼 是乙個執行緒,如果是單核cpu的話,上面兩個動作其實可以確切的理解為併發,也就是偽並行,只是兩者相差的時間太快沒有察覺。電腦現在一般都是雙核的或者...

iOS開發 多執行緒簡介

多執行緒從概念上理解是指從軟體或者硬體上實現多個執行緒併發執行的技術,簡單點理解就是同一時間可以執行多個事情 比如說一邊聽歌一邊碼 聽歌是乙個執行緒,碼 是乙個執行緒,如果是單核cpu的話,上面兩個動作其實可以確切的理解為併發,也就是偽並行,只是兩者相差的時間太快沒有察覺。電腦現在一般都是雙核的或者...

iOS 多執行緒簡介 一

比如同時開啟迅雷 xcode,系統就會分別啟動2個程序 什麼是多執行緒 多執行緒的原理 如果執行緒非常非常多,會發生什麼情況?多執行緒的優缺點 缺點 什麼是主線程 主線程的主要作用 主線程的使用注意 錯誤做法 void downloadimage 正確做法 資源共享 1塊資源可能會被多個執行緒共享,...