dispatch_barrier_async和dispatch_apply的使用

dispatch_barrier_async的使用
dispatch_barrier_async是在前面的任务执行结束后它才执行,而且它后面的任务等它执行完成之后才会执行
例子代码如下:
[cpp]
dispatch_queue_t queue = dispatch_queue_create(“gcdtest.rongfzh.yc”, DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@”dispatch_async1”);
});
dispatch_async(queue, ^{
[NSThread sleepForTimeInterval:4];
NSLog(@”dispatch_async2”);
});
dispatch_barrier_async(queue, ^{
NSLog(@”dispatch_barrier_async”);
[NSThread sleepForTimeInterval:4];

});
dispatch_async(queue, ^{
[NSThread sleepForTimeInterval:1];
NSLog(@”dispatch_async3”);
});

打印结果:
2012-09-25 16:20:33.967 gcdTest[45547:11203] dispatch_async1
2012-09-25 16:20:35.967 gcdTest[45547:11303] dispatch_async2
2012-09-25 16:20:35.967 gcdTest[45547:11303] dispatch_barrier_async
2012-09-25 16:20:40.970 gcdTest[45547:11303] dispatch_async3
请注意执行的时间,可以看到执行的顺序如上所述。

dispatch_apply
执行某个代码片段N次。
dispatch_apply(5, globalQ, ^(size_t index) {
// 执行5次
});

文章原文:
http://www.2cto.com/kf/201209/157722.html

猜你喜欢

转载自blog.csdn.net/lvmaker/article/details/50696549
今日推荐