作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试加快我的应用程序的启动速度,我对此的想法之一是使用异步调度队列。我有 2 个任务可以在启动时彼此相邻运行(实际上是相当大的任务)。但是,它们都有一个在主线程(主要是 UI 代码)上运行的重要部分。
dispatch_async(dispatch_get_main_queue, ^{
[self doTask1];
});
dispatch_async(dispatch_get_main_queue, ^{
[self doTask2];
//Will task 2 take turns with task 1, or will task 2 start after 1 is finished?
});
最佳答案
主队列是串行队列。添加到串行队列的 block 按照它们添加的顺序执行,并且一次只执行一个(串行)。在您的示例中,task2 在 task1 完成之前不会启动。
如果您希望它们同时运行,您需要将它们分派(dispatch)到全局并发队列之一。
dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(q, ^{/* this work may finish before other work added to this queue later */});
关于iphone - 主线程上的多个 GCD 调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566634/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!