- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
for (int i=0; i<100000; i++) {
NSLog(@"HIGH 1 %d", i);
}
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
for (int i=0; i<100000; i++) {
NSLog(@"LOW %d", i);
}
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
for (int i=0; i<100000; i++) {
NSLog(@"HIGH 2 %d", i);
}
});
结果是高 1、高 2 和低对数的混合。
它是如何同时打印high1和high2日志的? high1 和 high2 博客不是在同一个队列中吗?那么 high1 block 不应该在开始执行 high2 block 之前完成吗?
最佳答案
这取决于您运行的机器。我怀疑你在 Mac 上运行这个,因为 GCD 会自动为特定系统创建足够的线程来处理全局队列上的作业。因此,您可能有多个核心,因此 GCD 在两个核心上运行您的作业。
如果您使用 dispatch_queue_create
创建队列,您将获得一个串行队列,并且可以保证 FIFO 行为。
FWIW(尽管你不应该依赖这种行为),如果你在 iPhone 上运行它,我怀疑你会看到串行队列行为,因为你的 iPhone 是单核的。不过,请不要相信这一点,我认为 iPad 2 是多核的!
编辑:
dispatch_get_global_queue 的文档: 返回给定优先级的众所周知的全局并发队列。
关于iphone - dispatch_get_global_queue 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6872286/
以下代码: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ for (int i=0
我有这行代码: let queue = dispatch_get_global_queue(DISPATCH_QUEUE_CONCURRENT, 0); 我收到错误 Cannot invoke dis
我有这个简单的异步代码。 class MyClass { func myFunc() { dispatch_async(dispatch_get_global_queue(DI
在选择要在哪个队列上运行 dispatch_async 时,经常会提到 dispatch_get_global_queue。这是一个将任务委托(delegate)给特定线程的特殊后台队列吗?是不是差不
我继承了一个使用以下线程结构的代码库: dispatch_async(dispatch_get_main_queue(), { () -> Void in dispatch_async(dis
这个问题在这里已经有了答案: How do I dispatch_sync, dispatch_async, dispatch_after, etc in Swift 3, Swift 4, and
我刚刚开始在 iOS 上工作,并且一直在浏览 GCD 上的 Apple 引用资料。 dispatch_get_global _queue 返回一个并发队列,可以向其中提交要执行的 block 。 但是
我正在编写一个中等复杂的 iOS 程序,它需要有多个线程来执行一些较长的操作(解析、连接到网络等)。但是,我对 dispatch_get_global_queue 和 dispatch_queue_c
开始学习核心数据和 dispatch_async。有一段代码可以从一组数据中获取图像的 url 并将其设置为核心数据的模型,如下所示 dispatch_async(dispatch_get_globa
苹果的文档说,dispatch_get_global_queue()是并发队列,dispatch_sync是串行的意思,那么任务是异步处理还是同步处理? 最佳答案 您对什么是队列以及异步与同步的含义感
虽然使用 GCD 为后台线程创建的普通队列需要 dispatch_release 来释放对象的内存,但获取全局队列是否也需要做同样的事情,因为释放全局队列可能会导致操作系统出现问题我问:持有对由 di
我有一个表格 View ,其中我显示了 3 个单元格,并且取决于像分页一样工作的 Collection View 单元格。所以当我想从 dispatch_async(dispatch_get_glob
我有以下使用 block 获取联系人的代码片段: if (&ABAddressBookCreateWithOptions != NULL) { CFErrorRef error
let downloadGroup = dispatch_group_create() var images = [UIImage]() var errors = [NSError](
// Method called when a button is clicked - (void)handleClickEvent { dispatch_sync(dispatch_ge
我是一名优秀的程序员,十分优秀!