问题标签 [grand-central-dispatch]
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.
ios - 您如何在延迟后触发块,例如 -performSelector:withObject:afterDelay:?
有没有办法在延迟后调用带有原始参数的块,例如使用performSelector:withObject:afterDelay:
但带有int
//之类的参数double
?float
iphone - 你需要在 GCD 的一个块中创建一个 NSAutoreleasePool 吗?
通常,如果您生成后台线程或在 NSOperationQueue 上运行 NSOperation,则需要为该线程或操作创建 NSAutoreleasePool,因为默认情况下不存在。
相同的规则是否适用于放置在 Grand Central Dispatch 队列中并将在非主线程上运行的块?也就是说,您是否需要在您分派到主队列以外的任何块中创建一个 NSAutoreleasePool ?
在我有限的测试中,我看不到自动释放对象的控制台警告,您通常会在后台线程或 NSOperations 中看到这些警告。但是,我似乎无法找到关于此的明确文档,所以我想知道是否有人可以指出这是在哪里说明的。
macos - GCD 块在调用时触发 EXC_BAD_ACCESS
我正在制作一个非垃圾收集的 MacFUSE Cocoa 应用程序,我想在其中使用 GCD 块作为委托。但是,我的程序在调用块期间崩溃,只留下一个EXC_BAD_ACCESS
。
我的程序使用了一个基于 Mac OS 10.5 SDK 构建的框架,它不支持垃圾收集(也不支持 64 位)和 MacFUSE 框架。该程序作为 32 位程序构建时没有警告或错误。其他构建设置(例如优化级别)保留为原始值。
所以我有我的应用程序控制器,我从中创建这个块并调用runWithContinuation:
runWithContinuation:
保留块并实例化一个笔尖。只有当用户按下“打开”按钮关闭密码提示时,才会调用该块。
我的问题是,当我点击时continuation()
,我的程序触发了一个EXC_BAD_ACCESS
,并且调用了最后一个堆栈帧??
。在它的正下方是open:
方法调用。
我真的不知道它是从哪里来的。NSZombies 已启用,它们不会报告任何内容。
有任何想法吗?
iphone - 使用 CoreData 的 Grand Central Dispatch (GCD)
我在我的应用程序中使用 Grand Central Dispatch (GCD) 来完成一些繁重的工作。该应用程序使用 Core-Data 进行数据存储。这是我的场景(以及相关问题):
作为 的结果[self saveManagedObjectContext]
,fetchResultsController
委托方法被自动调用。因此,UI 更新逻辑启动。
现在我的问题是,我需要使用main_queue
for-saveManagedObjectContext
吗?我应该在我NSManagedObject
的 in上执行所有操作main_queue
吗?一些更新的操作NSManagedObject
可能需要 2-3 秒。请指教。
iphone - Grand Central Dispatch (GCD) 和异步 API
我正在使用 Twitter API 发布推文。有时这可能需要一些时间,所以我想在后台执行“推文发布”操作。为此,我正在使用 GCD,如下所示:
问题是,我没有收到委托回调!我错过了什么?
objective-c - 如何等待异步调度的块完成?
我正在测试一些使用 Grand Central Dispatch 进行异步处理的代码。测试代码如下所示:
测试必须等待操作完成。我目前的解决方案如下所示:
哪个看起来有点粗糙,你知道更好的方法吗?我可以公开队列,然后通过调用阻止dispatch_sync
:
……但这可能在object
.
ios - 哪些任务比 GCD 更适合 NSOperation?
在为 iPhone 编程时,哪些任务更适合使用NSOperation
而不是使用?GCD
在我看来,他们似乎在做同样的事情。我看不出一个人的优势和劣势。
multithreading - 调用 performSelectorInBackground: 从后台线程
performSelectorInBackground:...
从后台运行的方法调用的真正效果是什么?我希望它异步运行
例如:
_imageBufferWasUpdated 将在后台运行,我想异步调用 _loop 方法(在后台也因此 _imageBufferWasUpdated 将很快完成,可能在 _loop 结束之前)。
它是否正确?
使用 GCD 是否有更有效(且相对简单)的方法来执行此操作?如果您能举例说明如何使用 GCD 分叉,我将不胜感激。我想我至少需要 3 个线程,主线程、运行 _imageBufferWasUpdated 的后台线程和 _loop 的其他后台线程。我对么?
提前感谢伊格纳西奥
iphone - GCD 队列而不是锁:为 Tableview 的 cellForRowAtIndexPath 读取数据
一个 Apple 的网站,有使用 GCD 队列而不是锁的建议模式:
当您有一个生产者线程一次添加大量推文而不是一一添加并且您需要一次读取一条推文以获取 UITableView 的 cellForRowAtIndexPath 时,您如何使用 GCD 处理锁和临界区?
如果您在每次“读取”时都保持“同步”,那不会导致很多不必要的阻塞吗?这真的是偶尔写一次,但经常读的场景..
objective-c - 打开多个文件的大中央策略
我有一个使用 Grand Central 调度队列的工作实现,它(1)打开一个文件并计算“queue1”上的 OpenSSL DSA 哈希,(2)将哈希写到一个新的“side car”文件中,以便以后在“queue2”上验证.
我想同时打开多个文件,但基于一些不会通过打开 100 个文件并超过硬盘驱动器的可持续输出来“阻塞”操作系统的逻辑。iPhoto 或 Aperture 等照片浏览应用程序似乎可以打开多个文件并显示它们,所以我假设可以做到这一点。
我假设最大的限制将是磁盘 I/O,因为应用程序可以(理论上)同时读取和写入多个文件。
有什么建议么?
TIA