///////////////////////
dispatch_queue_t queue
=
dispatch_queue_create("org.itjoy.gcd",
DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue,
^{
//sleep(5);
NSLog(@"1
reading");
});
dispatch_async(queue,
^{
//sleep(2);
NSLog(@"2
reading");
});
// dispatch_async(queue, ^{
// NSLog(@"writing");
// });
dispatch_barrier_async(queue,
^{
NSLog(@"writing***");
});
dispatch_async(queue,
^{
//sleep(1);
NSLog(@"3
reading");
});
dispatch_async(queue,
^{
NSLog(@"4
reading");
});
dispatch_release(queue);
//**********************************************************
// 简单的添加,可能读取的数据有误
// 2013-08-15 13:51:11.490 GCD[4285:12803] 2 reading
// 2013-08-15 13:51:11.491 GCD[4285:14f03] 3 reading
// 2013-08-15 13:51:11.490 GCD[4285:12303] 1 reading
// 2013-08-15 13:51:11.491 GCD[4285:14d0f] writing
// 2013-08-15 13:51:11.493 GCD[4285:12803] 4 reading
// 2013-08-15 13:51:44.850 GCD[4313:14d0f] writing
// 2013-08-15 13:51:44.850 GCD[4313:12303] 1 reading
// 2013-08-15 13:51:44.850 GCD[4313:12b03] 2 reading
// 2013-08-15 13:51:44.850 GCD[4313:14f03] 3 reading
// 2013-08-15 13:51:44.853 GCD[4313:14d0f] 4 reading
//**********************************************************
// 使用dispatch_barrier_async添加的任务,在其之后添加的任务将等待他执行完成,才会执行剩余的
// 2013-08-15 13:52:24.107 GCD[4338:12b03] 2 reading
// 2013-08-15 13:52:24.107 GCD[4338:12303] 1 reading
// 2013-08-15 13:52:24.109 GCD[4338:12303] writing***
// 2013-08-15 13:52:24.109 GCD[4338:12303] 3 reading
// 2013-08-15 13:52:24.109 GCD[4338:12b03] 4 reading
// 2013-08-15 13:52:50.560 GCD[4353:12303] 1 reading
// 2013-08-15 13:52:50.561 GCD[4353:12c03] 2 reading
// 2013-08-15 13:52:50.571 GCD[4353:12c03] writing***
// 2013-08-15 13:52:50.571 GCD[4353:12c03] 3 reading
// 2013-08-15 13:52:50.572 GCD[4353:12c03] 4 reading