一個進程包括一個或者多個線程
進程:正在運行的程序
線程:最基本的執行單元
多個線程優點在於:提高執行效率,適當提高資源利用率
缺點:線程太多,佔用CPU,內存
1.
> pthread和GCD的區別
pthread和GCD基於C語言之上的,pthread生命週期要程序員管理 ,而後者不用
2.
>NSThread和NSOperation的區別
NSThread和NSOperation基於OC語言之上的NSThread生命週期要程序員管理 ,而後者不用
在ios開發中.GCD和NSOperation會用的比較多
GCD:不用管週期 多核優化
NSOperation:基於GCD 實現了GCD不好實現的功能
下面簡單說下用法:
生命週期:新建->可調度線程池—>運行—>阻塞—>就緒—>運行—>Death
NSThread:
1.對象方法
NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(task) object:nil];
//開啓線程
[thread start];
//開啓線程
[thread start];
2.類方法detach
[NSThread detachNewThreadSelector:@selector(task) toTarget:self withObject:nil];
3.隱式創建
: 用的比較多
[self performSelectorInBackground:@selector(task) withObject:nil];
阻塞 : 當多個異步任務在執行導入過程中,有一個特殊的任務要運行,當他運行的時候,其他任務不能運行(阻塞),運行完成之後居,其他的異步任務恢復併發執行
dispatch_barrier_async(concurrentQueue, ^{
[NSThread sleepForTimeInterval:1];
});