线程GCD

2018-08-22  本文已影响0人  我是好宝宝_6966

本文只是学习他人知识点进行一定的总结巩固自己的理解
学习GCD看我就够了
iOS多线程全套

一、多线程的定义

计算机在运行一段程序的时候,会把该程序的CPU命令列配置到内存中,然后按照顺序一个一个执行命令列,这样1个CPU执行的CPU命令列为一条无分叉路径就是线程。
而有多条这样的执行指令列的路径存在时即为多线程。

二、实现多线程的4种方法

三、GCD

一些定义

dispatch_queue_t main_queue = dispatch_get_main_queue();
    dispatch_sync(main_queue, ^{
        NSLog(@"main queue");
    });
    NSLog(@"go on");

产生死锁的原因一般是 在串行队列中并且是在一个线程中同步往这个线程提交一个Block

dispatch_group_enter(dispatch_group_t group);
dispatch_group_leave(dispatch_group_t group);

四、GCD的具体运用(更多使用可以看第二个链接)

//创建任务分组
dispatch_group_t group = dispatch_group_create();
//创建异步队列
dispatch_queue_t queue = dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT);

dispatch_group_enter(group);
dispatch_group_async(group, queue, ^{
    dispatch_group_leave(group);
});

//所有队列里的任务执行完的通知
dispatch_group_notify(group, queue, ^{
     dispatch_async(dispatch_get_main_queue(), ^{
            
     });
});
上一篇下一篇

猜你喜欢

热点阅读