我知道你可能会发现这是一个奇怪的问题,但我只是在学习GCD,我想完全理解它的所有方面.所以这里是:
有没有理由在CURRENT QUEUE上发送任务SYNC?
例如:
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(...); dispatch_async(concurrentQueue,^{ //this is work task 0 //first do something here,then suddenly: dispatch_sync(concurrentQueue,^{ //work task 1 }); //continue work task 0 });
我理解一件事:如果不使用concurrentQueue我使用串行队列,那么我在该串行队列上遇到死锁,因为工作任务1在工作任务0完成之前无法启动(因为串行队列保证了执行顺序),同时工作任务0无法继续执行,因为它等待SYNC调度函数返回(请纠正我,如果我错了,这将使我成为一个总菜鸟).
回到最初的想法,上面的代码和相同的代码之间有什么区别,而不是调用dispatch_sync函数我直接编写工作任务1代码?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。