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