Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 1.47 KB

File metadata and controls

53 lines (36 loc) · 1.47 KB

2.GCD 相关知识?(栅栏函数、Group、定时器、信号量、队列类型、任务派发方式、快速迭代、延迟处理)

1.栅栏函数(控制任务的执行顺序)
    dispatch_barrier_async(queue, ^{
    
        NSLog(@"barrier");
    });
2.延迟执行(延迟·控制在哪个线程执行)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSLog(@"---%@",[NSThread currentThread]);
    });
3.一次性代码
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{

       NSLog(@"-----");
   });
4.快速迭代(开多个线程并发完成迭代操作)
    dispatch_apply(subpaths.count, queue, ^(size_t index) {
    });
5.队列组(同栅栏函数)
    dispatch_group_t group = dispatch_group_create();
    // 队列组中的任务执行完毕之后,执行该函数
    dispatch_group_notify(dispatch_group_t group,dispatch_queue_t queue,dispatch_block_t block);

    // 进入群组和离开群组
    dispatch_group_enter(group);//执行该函数后,后面异步执行的block会被gruop监听
    dispatch_group_leave(group);//异步block中,所有的任务都执行完毕,最后离开群组
    //注意:dispatch_group_enter|dispatch_group_leave必须成对使用
6.信号量(并发编程中很有用)