ios-UI高級 多線程部分內容總結

1、多線程概念
多線程是指從軟件或者硬件實現多個線程併發執行的技術,即同一時間可以執行多個線程.一個程序有且只有一個主線程,程序啓動時創建(調用main來啓動)主線程的生命週期是和應用程序綁定的,程序退出(結束)時,主線程也就停止了.
2、多線程的原理
a) 同一時間,cpu只能處理一條線程,只有一條線程在執行
b) 多線程併發執行,其實是cpu快速的在多線程進行切換
c) 因爲cpu調度線程的速度較快,所以就造成了多線程併發執行的假象
3、多線程的優缺點
多線程優點:
a) 能提高程序的執行效率
b) 能適當提高cpu的資源利用率

多線程缺點:
a) 創建線程是有大約需要90毫秒的創建時間
b) 如果開啓大量線程會降低程序的性能
c) 線程越多,cpu的消耗就會越大
d) 程序設計更加複雜,比如多線程之間的通信
4、線程實現
·NSThread
·優點:NSThread 比其他兩個輕量級 
·缺點:需要自己管理線程的生命週期,加鎖等
·Cocoa operation
·優點:不需要關心線程管理,數據同步的事情,可以把精力放在自己需要執行的操作上
·Cocoa operation 相關的類是 NSOperation ,NSOperationQueue。 NSOperationQueue是操作隊列,用來管理和控制NSOperation。NSOperation是操作任務,是抽象類,使用它必須用它的子類
·Grand Central Dispatch
·GCD是一個替代諸如NSThread, NSOperationQueue等技術的
    一個高效、強大、底層的技術
舉例:
NSThread *thread1 = [[NSThread alloc]initWithTarget:self selector:@selector(threadCall) object:nil];
    
 //啓動線程,調用start方法
[thread1 start];
[self performSelector:@selector(cancelThread1:) withObject:thread1 afterDelay:1];
 NSLog(@"ViewController的優先級:%lf",[NSThread threadPriority]);


 NSLog(@"myViewController是否是主線程:%d",[[NSThread currentThread] isMainThread]);
-(void)cancelThread1:(NSThread*)thread{

    [thread cancel];
    
}
-(void)threadCallMethod{

    //延遲3s,判斷當前線程是否是被取消的狀態.
    [NSThread sleepForTimeInterval:3];
    
    if ([[NSThread currentThread]isCancelled]) {
        
        //如果是,退出線程
        [NSThread exit];
        
    }
    
    NSLog(@"threadPriority的優先級:%lf",[NSThread threadPriority]);
    
    NSLog(@"threadCall是否是主線程:%d",[[NSThread currentThread] isMainThread]);
    
}
說明:這裏寫的代碼例子並不全面,只是舉了多線程其中的一種例子。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章