我正在努力完全理解GCD中的并发和串行队列.我有一些问题,希望有人能够清楚地回答我.
我正在读取串行队列的创建和使用,以便一个接一个地执行任务.但是,如果出现以下情况:
dispatch_async(在我刚创建的串行队列上)三次来发送三个块A,B,C这三个块会被执行:
按顺序A,B,C,因为队列是串行的
要么
我正在阅读我可以dispatch_sync在并发队列上使用,以便一个接一个地执行块.在这种情况下,为什么串行队列甚至存在,因为我总是可以使用并发队列,我可以根据需要同步调度多个块?
谢谢你的任何好解释!
好的,我喜欢Grand Central Dispatch并且在使用它之后相对成功,但这是我不完全理解的.
假设我已经创建了自己的串行队列
dispatch_queue_t myQueue;
myQueue = dispatch_queue_create("myQueue", NULL);
Run Code Online (Sandbox Code Playgroud)
之后我这样做:
dispatch_async(myQueue, ^{
[self doStuff1];
});
// and a few lines later...
dispatch_sync(myQueue, ^{
[self doStuff2];
});
Run Code Online (Sandbox Code Playgroud)
第一个调度是异步的.那么,它将同时完成,对吧?如果myQueue是串行的怎么办?串行队列如何并行执行,或者如果不按顺序执行?
谢谢