- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 5 个函数需要在单独的线程上运行。 Grand Central Dispatch 应该比线程更高效,所以我决定使用它。每个函数都有一个无限的 while 循环 - while(true)
- 在整个程序期间运行。所以在程序存在之前函数不会返回。问题是,GCD 不会同时运行队列——它一次运行一个队列。当第一个队列完成时,它开始第二个队列。如果我将每个函数放在一个队列中,只有一个会运行,因为 Grand Central Dispatch 将等待第一个函数返回以运行下一个函数,但该函数永远不会返回(因为它是一个无限循环)。有什么办法可以将 GCD 与无限循环功能一起使用吗?还是我应该只使用线程?
Mac OSX Snowleopard 10.6.8 上的 Xcode 3.2.6。
最佳答案
男孩,到目前为止有很多困惑/冲突的答案!
首先,您没有理由在这里使用线程。没有任何。使用 GCD,即使是“长时间运行”的操作,也完全没问题。如果您从上述操作中所做的只是读取数据,然后对数据执行某些操作,那么您当然应该使用 dispatch sources 或 dispatch_io 因为这就是它们的用途,它们可以大大简化您的代码,也只在必要时创建线程,但是如果您真的执着于拥有多个长时间运行的并行操作的概念,那么只需将这些操作中的每一个包装到一个 block 中,然后将这些 block 分派(dispatch)到一个全局并发队列中。它们将并行运行。如果您拥有的更多是“多个工作流”,其中每个工作流代表一个不同的操作链,这些操作需要串行但与其他工作流并行,然后为每个工作流创建一个串行队列和独立的串行队列队列将彼此同时运行。就这么简单! GCD 经常让那些期望事情变得更复杂,或者来自经典线程背景并试图将一个概念映射到另一个概念的人感到困惑。不要那样做,你会过得轻松得多。 :)
关于objective-c - 使用带有无限 while 循环的 Grand Central Dispatch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245606/
我正在研究 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
我是一名优秀的程序员,十分优秀!