ios - dispatch_barrier_async not word with dispatch_get_global_queue -
there code:
dispatch_queue_t queue = dispatch_get_global_queue(dispatch_queue_priority_default, 0); // dispatch_queue_t queue = dispatch_queue_create("zxc", dispatch_queue_concurrent); dispatch_async(queue, ^{ nslog(@"1"); }); dispatch_async(queue, ^{ nslog(@"3"); }); dispatch_async(queue, ^{ nslog(@"4"); }); dispatch_barrier_async(queue, ^{ nslog(@"write"); }); dispatch_async(queue, ^{ nslog(@"5"); }); dispatch_async(queue, ^{ nslog(@"2"); }); dispatch_async(queue, ^{ nslog(@"7"); }); dispatch_async(queue, ^{ nslog(@"6"); });
dispatch_barrier_async
not work dispatch_get_global_queue
can work dispatch_queue_create("zxc", dispatch_queue_concurrent);
why?
correct. cannot put barrier on global queue. can put barriers on private queues create yourself. explained in documentation dispatch_barrier_async
:
the queue specify should concurrent queue create using dispatch_queue_create function. if queue pass function serial queue or 1 of global concurrent queues, function behaves dispatch_async function.
Comments
Post a Comment