问题标签 [libdispatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - libdispatch AKA Grand Central Dispatch 在哪里导入?
我正在阅读Apple 关于 Concurrency 的文档,更具体地说是关于 NSOperationQueue 与 Dispatch Queue 的文档。
他们这样说:
“一个操作队列是一个并发调度队列的 Cocoa 等价物......”
这让我想知道,如果 NSOperationQueue 可以通过 Cocoa 框架使用,那么 GCD 是如何可用的?
当我打电话时dispatch_after...
,为什么我不需要#import <Cocoa/Cocoa.h>
?
编译器如何识别 GCD 选择器?
grand-central-dispatch - 什么是转换 C 风格 API 以使用带有块的 libdispatch 的灵活方法
我有一个用 C 编写的现有 C API,它大量使用从函数返回的状态代码进行错误处理。我试图了解使用 libdispatch 处理此类情况的首选方法。
这是一个示例函数。RETURN_ERROR 和相关宏只是调用一个返回错误代码并打印消息的函数。
我想在 sql 访问位周围使用串行队列,并且知道我可以dispatch_sync
用来返回值。但是,我也读到过很多同步调用很容易陷入死锁。
这种界面的最佳实践是什么?传递一个带有成功/失败处理程序的块?我会提供一个dispatch_queue_t
参数让完成块在用户指定的队列上运行吗?
linux - Linux 中的 Swift:使用未解析的标识符“dispatch_async”
我编译了libdispatch。此代码有效:
但是,如果我将此代码放在结束文件中:
我收到一个错误:
使用未解析的标识符“dispatch_async”
ios - NSOperationQueue 和 GCD 的互操作性
我正在构建一个库,我希望在单个串行队列中进行处理。我使用的一些API NSOperationQueue
(例如NSURLSession
)和一些dispatch_queue_t
(例如CBCentralManager
)。
如何指定NSOperationQueue
anddispatch_queue_t
值以使它们指向同一个队列?还是两者不能互操作,我试图做的事情是不可能和/或不可取的?
android - libDispatch 从 Java 服务 RunOnMainQueueDelayed
我在 Android 平台上使用 libDispatch (GCD) 开源。因此,大多数复杂耗时的任务都是通过 NDK 完成的(我使用的是 libDispatch)。
我正在使用函数 RunOnMainQueueDelayed 在 MainQueue 上安排一些延迟的任务。为了运行主队列任务,我在 java 端运行了一个 15 毫秒的定时器,每当定时器到期时,我运行一个 JNI 调用,它将在本机端运行函数 _dispatch_main_queue_callback_4CF 以便执行主队列上的任务。
现在我面临的问题是,如果我在主队列中提供小于~15ms 的延迟,那么任务就会被执行。但是,如果延迟超过 15 毫秒,或者任务在至少一个任务执行后被调度到队列中,那么所有任务都不会被执行。
我无法理解 MainQueue 出现这种奇怪行为的原因。我试图调试 libdispatch 的代码,但找不到原因。
有人请 mainQueue 是如何工作的,这个问题的原因可能是什么。
macos - 10.9.5 生产崩溃与 libdispatch - 如何调试?
我刚刚在 App Store 上发布了一个 OSX 应用程序,并且有报道称它在 OSX 10.9.5 上崩溃了
以下是来自用户崩溃报告的相关信息:
我无法使用 Mavericks 机器,并且无法从该报告中提取有意义的信息。
这看起来像 libdispatch 中不受支持的 API 使用吗?或者这只是意味着崩溃发生在调度块内的某个地方?
我确实在崩溃时使用了 dispatch_async() 。
该应用程序基于 OSX 10.11.3 构建,并以 Xcode 7.2、最新 SDK、10.9 作为部署目标。我可以扫描我的代码以查找不受支持的 API 使用吗?
android - 为 Android 编译 libDispatch (GCD)
我正在尝试在 Android 上为 linux 编译 libdispatch 。但是我在项目文件中找不到任何关于 Android 的说明。
我可以看到有几个关于使用 libdispatch 的StackOverflow问题,但信息相当薄。
有没有人使用 NDK 成功为 Android编译libdispatch ?
swift - 如何在 Swift 3、Swift 4 及更高版本中 dispatch_sync、dispatch_async、dispatch_after 等?
我在 Swift 2.x(甚至 1.x)项目中有很多代码,如下所示:
或者像这样延迟执行的东西:
或者 Grand Central Dispatch API 的任何其他用途......
现在我已经在 Xcode 8 (beta) 中为 Swift 3 打开了我的项目,我得到了各种各样的错误。他们中的一些人提供修复我的代码,但并非所有修复程序都会产生工作代码。我该怎么办?
swift - Swift 3 中的 dispatch_once 在哪里?
好的,所以我在 Xcode 8 中发现了新的Swifty Dispatch API。我玩得很开心DispatchQueue.main.async
,我一直在浏览Dispatch
Xcode 中的模块以找到所有新的 API。
但我也dispatch_once
用来确保诸如单例创建和一次性设置之类的事情不会多次执行(即使在多线程环境中)......并且dispatch_once
在新的 Dispatch 模块中找不到?
macos - libdispatch (GCD) 的调度模型是什么?
libdispatch 中块的调度模型是什么?我了解有不同优先级的各种队列。是否像工作线程首先服务最高优先级队列一样简单?
如果是这种情况,它如何避免低优先级队列中的饥饿?当线程阻塞时会发生什么?
如何在工作线程上处理阻塞 I/O?
它如何知道要生成多少个工作线程,以及它是否会生成更多以在运行时处理负载?
libdispatch 与 goroutines 相比如何?