- 線程的顯式,隱式
- 管理線程的生命週期方面
- 共享數據的安全問題
- 使用的場景方面
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]);
}
});
}