- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在我的应用程序中成功使用 grand central dispatch,但我想知道使用这样的东西的真正优势是什么:
dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff
甚至
dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff
我的意思是,在这两种情况下,您都在触发一个要在主线程上执行的 block ,也就是应用程序运行的位置,这无助于减少负载。在第一种情况下,您无法控制 block 何时运行。我见过在你发射它们后半秒执行 block 的情况。第二种情况,类似于
[self doStuff];
对吗?
不知道大家怎么看
最佳答案
将 block 分派(dispatch)到主队列通常是从后台队列完成的,以发出某些后台处理已完成的信号,例如
- (void)doCalculation
{
//you can use any string instead "com.mycompany.myqueue"
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
dispatch_async(backgroundQueue, ^{
int result = <some really long calculation that takes seconds to complete>;
dispatch_async(dispatch_get_main_queue(), ^{
[self updateMyUIWithResult:result];
});
});
}
在这种情况下,我们正在对后台队列进行冗长的计算,并且需要在计算完成后更新我们的 UI。更新 UI 通常必须从主队列完成,因此我们使用第二个嵌套的 dispatch_async 向主队列“发信号”。
可能还有其他示例,您可能希望分派(dispatch)回主队列,但通常以这种方式完成,即从分派(dispatch)到后台队列的 block 中嵌套。
至于为什么你可能想要从主队列 调度到主队列......好吧,你通常不会,尽管可以想象你可能会安排一些工作来做下一个运行循环的时间。
关于ios - iPhone - Grand Central Dispatch 主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905192/
我正在研究 CSS3 转换。我希望我的问题不会太菜鸟和现实 :) 基本上,每当用户将鼠标悬停在某些元素上时,我都会通过 css 更改文本的颜色。 现在我遇到的问题是:我有一个带有产品名称的 div 框
我想使用 javascript/jquery 获取 #mainChildElement 相对于 .grand-grand-grand-parent 的位置。我尝试执行 $('#mainChildEle
我想使用 flex“系统”来获得看起来像如下图所示,但我的布局 div 和 flex 之间有一些生成的指令: [flex=66]
我正在使用 Lucida Grande 字体系列,它工作得很好。 FontLabel *label4 = [[FontLabel alloc] initWithFrame:CGRectMake(10,
我在解码(孙)子表的元素时遇到问题。这是传入数据的结构: 1 1 text/html theFile.txt
我一直在看this question尝试解决我的问题 here . tl;dr 是我想使用 GCD 让我在执行某些任务时显示“等待”屏幕,然后在完成后隐藏屏幕。现在,我有 - (void) doStu
只要包含 Rect 默认构造函数,我就有以下代码可以正常运行。但是,如果我将其注释掉,希望它会“跳到”Shape 默认构造函数,但它无法编译。 #include class Shape { publ
我有一个关于 SOR(连续过度松弛)的问题。我知道 SOR 可以描述为 N*N 网格,您在网格上执行 n 次迭代,并且可以报告执行时间。该基准测试有一个迭代外循环和两个内循环。内循环用于更新网格的每个
我在 wordpress 中设计了一个模板,现在我正在用 css/html 编写它,但浏览器似乎没有使用我的字体。 Photoshop: 浏览器: 这是我的CSS h1 { font-size: 34
在尝试查找用 C 编写的某些进程应用程序的所有根,并调用我所做的自定义系统调用时,该调用返回一个包含所有进程的数组使用 task_struct* 的信息,我发现任务 swapper/0 是通过父指针指
我们正在通过本地代理服务器播放媒体。在新的 Samsung Grand 设备出现之前,一切都很好。在该特定设备中,我们收到如下 Socket 异常: 4-04 17:55:35.646: W/Syst
GCD 允许根据 4 个全局优先级队列(高、默认、低、背景)将 block 分派(dispatch)到队列。 我的应用程序中有几个 NSOperationQueues,但希望以不同的优先级运行每个。据
长值参数在 dispatch_semaphore_create 中表示什么? dispatch_semaphore_create(long value) 我在文档中没有看到这一点,只有它与零参数一起使
给定以下代码片段: #import @interface DispatchTests : XCTestCase { dispatch_queue_t _workQueue; disp
有谁知道关于 Apple 即将推出的“Grand Central”技术(在 Snow Leopard 中)的任何好的网站,以及它与来自 Microsoft 的 Parallel Extensions(
documentation for dispatch_semaphore_wait说它“以 FIFO 顺序等待信号”。但在这个例子中似乎没有——有人可以解释一下吗? 示例: #include #in
在名为“报告”的事件工作表中,我有 2 列 I 和 F。 它具有包含文本“总计”的重复单元格。 如果它自动包含总计,我想删除整行。 VBA 代码会很好。 最佳答案 使用以下VBA代码,您可以快速删除具
我正在尝试了解队列类型之间的差异。据我了解,有 3 种类型: 全局队列 - 并发 - block 无论顺序如何都会尽快执行 主队列 - 串行 - block 在提交时执行 私有(private)队列
假设当应用程序进入暂停模式时,我正在运行一个GDC线程。会发生什么?胎面会停止还是继续运行?还是我必须自己停止它,在这种情况下如何完成? 谢谢指教! 最佳答案 Background State & N
我正在使用我为 GCD 找到的一个相当不错的教程,它向您展示了如何声明一个新的调度队列。 Grand Central Dispatch operates using queues. Queues ar
我是一名优秀的程序员,十分优秀!