多執行緒 NSThread 的使用

2022-09-16 07:21:12 字數 1064 閱讀 7161

nsthread簡介

使用nsthread 實現多執行緒,需要手動管理執行緒的生命週期, 

一.執行緒的建立

//1.

例項方法建立,,需要手動啟動執行緒

nsthread*thread = [[nsthreadalloc]initwithtarget:selfselector:@selector(run) object:nil];

[thread

start];

//2.

類方法二.執行緒的睡眠(暫停執行緒)

//當前執行緒呼叫 sleep 方法,進入阻塞狀態,

三.改變執行緒的優先順序

//優先順序越高的執行緒,被執行的幾乎越高,每個執行緒的優先順序預設為0.5

//獲取

nslog(@"%f",thread.threadpriority);

//設定

四.執行緒的安全問題

1.使用@ synchronized 實現同步

@synchronized

//含義:執行緒開始執行同步**塊之前,需要先獲得對同步監視器的鎖定

//同步監視器目的: 阻止 兩個執行緒對乙個共享資源進行併發訪問

2.同步鎖 nslock

//類似,只是顯示的使用物件最為同步鎖

//每次只能有乙個執行緒對 nslock 物件加鎖,執行緒開始訪問共享資源之前需要獲得 nslock 物件

nslock*lock;

lock = [[nslockalloc]init];

//鎖定

//...需要保證執行緒安全的**

//解鎖

五.使用 nscondition 控制線程通訊

nscondition提供了三個方法:

1.阻塞當前執行緒,直到其他執行緒呼叫了該 nscondition 的 signal 或 broadcast 方法,來喚醒該執行緒

- wait 

- waituntildate:

2.喚醒在此 nscondition物件上等待的單個執行緒

- signal

3.喚醒在此 nscondition物件上等待的所有執行緒

- broadcast

多執行緒 NSThread

我們想要載入網路上的一張 define url imag 然後初始化按鈕和乙個沒有的imageview 也可以再加乙個lable顯示資訊 主線程直接載入 self.imageview.image uiimage imagewithdata self loaddatawithurl url imag ...

網路多執行緒 NSThread的使用

import viewcontroller.h import xmgthread.h inte ce viewcontroller end implementation viewcontroller void touchesbegan nsset touches withevent uievent ...

iOS 多執行緒 NSThread

ibaction startthreadbuttonpressed uibutton sender 建立新的執行緒,執行緒的函式為 startthebackgroundjob.具體的 startthebackgroundjob 函式定義如下.void startthebackgroundjob 在第...