1. 程式人生 > >三種線程的區別

三種線程的區別

lis nbsp 語言 優先級 pat 隊列 %d void you

  • 線程的顯式,隱式
  • 管理線程的生命周期方面
  • 共享數據的安全問題
  • 使用的場景方面
NSThread: 是一種輕量級的線程,顯式的線程創建方法,很直白的創建了一個線程,可以對線程做一下詳細的處理,比如說名稱,優先級 缺點:需要對共享數據做加鎖處理 需要自己管理線程的生命周期(比如說創建) GCD: 是基於C語言的,不需要關註線程的生命周期,關註點:放在需要處理的任務就可以,節省代碼,在簡單項目上常用
顯式、隱式 生命周期 數據安全 使用場景 關註點
NSThread 顯式 需要管理 需要處理
GCD 隱式 不需要
不需要 簡單項目 給哪個隊列添加了幾個任務,添加順序是怎樣的
NSOperationQueue 隱式 不需要 不需要 復雜項目 給哪個隊列添加了幾個任務,添加順序是怎樣的
-(void)gcd3 { // 關註點:給哪個隊列添加了幾個任務 ,添加任務的順序是 NSLog(@"11111111%@",[NSThread currentThread]); dispatch_queue_t queue=dispatch_queue_create(nil, DISPATCH_QUEUE_SERIAL); for (int i=0; i<6; i++) {
dispatch_async(queue, ^{//給串行隊列裏面添加了6個任務,非立即添加 NSLog(@"%@ %d",[NSThread currentThread],i); }); } dispatch_sync(queue, ^{ //給串行隊列裏面添加了1個任務,立即添加 NSLog(@"888888%@",[NSThread currentThread]); for (int i=0; i<3; i++) { [NSThread sleepForTimeInterval:2]; NSLog(@"222222%@",[NSThread currentThread]);
} }); }

三種線程的區別