4.多线程 串行、并行、同步、异步、死锁

      多线程的前提是在同一队列。队列负责管理多个任务,队列拥有一个线程池,线程池里有一个或者多个线程,按要求将每个任务调度到某一个线程执行。

 

      串行队列,后一个任务等待前一个任务结束后在执行,按添加顺序执行。

 

      并行队列,后一个任务不会等待前一个任务,不等前一个任务完成就会分配新的任务。

 

      创建队列dispatch_queue_t,串行DISPATCH_QUEUE_SERIAL,并行DISPATCH_QUEUE_CONCURRENT。

 

      同步dispatch_sync,不会创建新的线程,会阻塞当前的线程并在该线程中执行任务。

     

      异步dispatch_async,不会阻塞当前线程,会在恰当的时机在当前线程或者另开线程执行任务,开始任务和完成任务时间是不确定的。

 

      死锁,向同一个串行队列添加同步任务,因为同步,进行中的任务等待添加任务完成,因为串行,添加的任务等待上一个任务完成,因为互相等待形成死循环。

- (void)viewDidLoad {

    [super viewDidLoad];

    dispatch_sync(dispatch_get_main_queue(), ^{

     });

}

    

     

 

      

posted @ 2019-12-06 10:59  灰熊Grizzly  阅读(211)  评论(0编辑  收藏  举报