问题标签 [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.

0 投票
1 回答
820 浏览

objective-c - libdispatch AKA Grand Central Dispatch 在哪里导入?

我正在阅读Apple 关于 Concurrency 的文档,更具体地说是关于 NSOperationQueue 与 Dispatch Queue 的文档。

他们这样说:

“一个操作队列是一个并发调度队列的 Cocoa 等价物......”

这让我想知道,如果 NSOperationQueue 可以通过 Cocoa 框架使用,那么 GCD 是如何可用的?

当我打电话时dispatch_after...,为什么我不需要#import <Cocoa/Cocoa.h>

编译器如何识别 GCD 选择器?

0 投票
1 回答
164 浏览

grand-central-dispatch - 什么是转换 C 风格 API 以使用带有块的 libdispatch 的灵活方法

我有一个用 C 编写的现有 C API,它大量使用从函数返回的状态代码进行错误处理。我试图了解使用 libdispatch 处理此类情况的首选方法。

这是一个示例函数。RETURN_ERROR 和相关宏只是调用一个返回错误代码并打印消息的函数。

我想在 sql 访问位周围使用串行队列,并且知道我可以dispatch_sync用来返回值。但是,我也读到过很多同步调用很容易陷入死锁。

这种界面的最佳实践是什么?传递一个带有成功/失败处理程序的块?我会提供一个dispatch_queue_t参数让完成块在用户指定的队列上运行吗?

0 投票
1 回答
1199 浏览

linux - Linux 中的 Swift:使用未解析的标识符“dispatch_async”

我编译了libdispatch。此代码有效:

但是,如果我将此代码放在结束文件中:

我收到一个错误:

使用未解析的标识符“dispatch_async”

0 投票
1 回答
93 浏览

ios - NSOperationQueue 和 GCD 的互操作性

我正在构建一个库,我希望在单个串行队列中进行处理。我使用的一些API NSOperationQueue(例如NSURLSession)和一些dispatch_queue_t(例如CBCentralManager)。

如何指定NSOperationQueueanddispatch_queue_t值以使它们指向同一个队列?还是两者不能互操作,我试图做的事情是不可能和/或不可取的?

0 投票
0 回答
137 浏览

android - libDispatch 从 Java 服务 RunOnMainQueueDelayed

我在 Android 平台上使用 libDispatch (GCD) 开源。因此,大多数复杂耗时的任务都是通过 NDK 完成的(我使用的是 libDispatch)。

我正在使用函数 RunOnMainQueueDelayed 在 MainQueue 上安排一些延迟的任务。为了运行主队列任务,我在 java 端运行了一个 15 毫秒的定时器,每当定时器到期时,我运行一个 JNI 调用,它将在本机端运行函数 _dispatch_main_queue_callback_4CF 以便执行主队列上的任务。

现在我面临的问题是,如果我在主队列中提供小于~15ms 的延迟,那么任务就会被执行。但是,如果延迟超过 15 毫秒,或者任务在至少一个任务执行后被调度到队列中,那么所有任务都不会被执行。

我无法理解 MainQueue 出现这种奇怪行为的原因。我试图调试 libdispatch 的代码,但找不到原因。

有人请 mainQueue 是如何工作的,这个问题的原因可能是什么。

0 投票
1 回答
450 浏览

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 使用吗?

0 投票
1 回答
1047 浏览

android - 为 Android 编译 libDispatch (GCD)

我正在尝试在 Android 上为 linux 编译 libdispatch 。但是我在项目文件中找不到任何关于 Android 的说明。

我可以看到有几个关于使用 libdispatch 的StackOverflow问题,但信息相当薄。

有没有人使用 NDK 成功为 Android编译libdispatch ?

0 投票
6 回答
205423 浏览

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 打开了我的项目,我得到了各种各样的错误。他们中的一些人提供修复我的代码,但并非所有修复程序都会产生工作代码。我该怎么办?

0 投票
7 回答
35161 浏览

swift - Swift 3 中的 dispatch_once 在哪里?

好的,所以我在 Xcode 8 中发现了新的Swifty Dispatch API。我玩得很开心DispatchQueue.main.async,我一直在浏览DispatchXcode 中的模块以找到所有新的 API。

但我也dispatch_once用来确保诸如单例创建和一次性设置之类的事情不会多次执行(即使在多线程环境中)......并且dispatch_once在新的 Dispatch 模块中找不到?

0 投票
0 回答
142 浏览

macos - libdispatch (GCD) 的调度模型是什么?

libdispatch 中块的调度模型是什么?我了解有不同优先级的各种队列。是否像工作线程首先服务最高优先级队列一样简单?

如果是这种情况,它如何避免低优先级队列中的饥饿?当线程阻塞时会发生什么?

如何在工作线程上处理阻塞 I/O?

它如何知道要生成多少个工作线程,以及它是否会生成更多以在运行时处理负载?

libdispatch 与 goroutines 相比如何?