RunLoop常駐執行緒
在開發中,經常遇到的便是開啟一個執行緒,當執行緒的任務完成,該執行緒便會被自動收回。
但是如果我們需要一個執行緒一直存在,等待執行某個任務該怎麼辦呢?
我們可以使用RunLoop來實現
首先:
1. 執行緒的宣告週期與任務有關,任務完成之後,他就會被系統自動銷燬,以節省開支。
2.RunLoop用於控制NSRunLoop裡面執行緒的執行和休眠,在有事情做的時候使當前NSRunLoop控制的執行緒工作,沒有事情做讓當前NSRunLoop的控制的執行緒休眠。
3.每個RunLoop都有一個mode ,model中有timer/source/observer/, 只要這個mode存在,RunLoop 就不會退出
程式碼實現
@interface ViewController ()
@property (strong, nonatomic) NSThread *subThread;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//建立一個子執行緒
NSThread *subThread = [[NSThread alloc] initWithTarget:self selector:@selector(subThread) object:nil];
//開啟執行緒
[subThread start];
self.subThread = subThread;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//當點選的時候在指定的執行緒上執行一個任務
[self performSelector:@selector(threadAction) onThread:self.subThread withObject:nil waitUntilDone:NO];
}
//繫結執行緒事件
- (void) subThread
{
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[runLoop run];//加入當前的RunLoop
}
- (void)threadAction
{
[NSThread sleepForTimeInterval:3.0];
}
@end
相關文章
- iOS:常駐執行緒iOS執行緒
- iOS探索:RunLoop本質、資料結構以及常駐執行緒實現iOSOOP資料結構執行緒
- iOS底層原理 - 常駐執行緒iOS執行緒
- Runloop 多執行緒OOP執行緒
- 多執行緒之Runloop執行緒OOP
- iOS 多執行緒:『RunLoop』詳盡總結iOS執行緒OOP
- runloop解決Cell上主執行緒卡頓OOP執行緒
- 深入研究 Runloop 與執行緒保活OOP執行緒
- 執行緒池以及四種常見執行緒池執行緒
- 多執行緒-多執行緒常見的面試題執行緒面試題
- Runloop-執行迴圈OOP
- 執行緒池OOM異常執行緒OOM
- iOS底層原理 RunLoop基礎總結和隨心所欲掌握子執行緒RunLoop生命週期 --(9)iOSOOP執行緒
- 多執行緒-執行緒的狀態轉換圖及常見執行情況執行緒
- iOS開發面試攻略(KVO、KVC、多執行緒、鎖、runloop、計時器)iOS面試執行緒OOP
- 常見的四種執行緒池執行緒
- 執行緒8--GCD常見用法執行緒GC
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- MySQL主執行緒、從I/O執行緒和從SQL執行緒的State列常見狀態介紹MySql執行緒
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- 多執行緒-執行緒控制之中斷執行緒執行緒
- 多執行緒-執行緒控制之守護執行緒執行緒
- 執行緒和執行緒池執行緒
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒
- Java多執行緒——執行緒Java執行緒
- 執行緒 執行緒池 Task執行緒
- JDK執行緒池異常處理方式JDK執行緒
- 【面經】多執行緒常見面試題執行緒面試題
- 多執行緒併發常見問題執行緒
- 理解常見的執行緒同步設施執行緒
- 執行迴路RunLoop型別機制OOP型別
- 保證執行緒在主執行緒執行執行緒
- 多執行緒之初識執行緒執行緒
- Java多執行緒-執行緒中止Java執行緒
- 執行緒控制之休眠執行緒執行緒