三種線程的區別

  • 線程的顯式,隱式
  • 管理線程的生命週期方面
  • 共享數據的安全問題
  • 使用的場景方面
 
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]);
}
});
 
}
相關文章
相關標籤/搜索