iOS GCD栅栏函数

作者: BEYOND黄 | 来源:发表于2017-05-30 00:51 被阅读46次

    避免数据竞争。

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event

    {

    //0.获得全局并发队列

    //栅栏函数不能使用全局并发队列

    //dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_queue_tqueue =dispatch_queue_create("download",DISPATCH_QUEUE_CONCURRENT);

    //1.异步函数

    dispatch_async(queue, ^{

    for(NSIntegeri =0; i<100; i++) {

    NSLog(@"download1-%zd-%@",i,[NSThreadcurrentThread]);

    }

    });

    dispatch_async(queue, ^{

    for(NSIntegeri =0; i<100; i++) {

    NSLog(@"download2-%zd-%@",i,[NSThreadcurrentThread]);

    }

    });

    //栅栏函数

    dispatch_barrier_async(queue, ^{

    NSLog(@"+++++++++++++++++++++++++++++");

    });

    dispatch_async(queue, ^{

    for(NSIntegeri =0; i<100; i++) {

    NSLog(@"download3-%zd-%@",i,[NSThreadcurrentThread]);

    }

    });

    dispatch_async(queue, ^{

    for(NSIntegeri =0; i<100; i++) {

    NSLog(@"download4-%zd-%@",i,[NSThreadcurrentThread]);

    }

    });

    }

    相关文章

      网友评论

      • 秋雨无痕:最好有个使用场景
        BEYOND黄:@秋雨无痕 比如说,你有个需求需要拼接两个网络上下载的图片,这三个任务是并发的,通过栅栏函数让下载两个图片任务先并发执行完,然后再进行拼接任务。

      本文标题:iOS GCD栅栏函数

      本文链接:https://www.haomeiwen.com/subject/sjilfxtx.html