0

伙计们,我需要一些帮助来构建我在 iOS 中的多线程。

我在我的代码中使用了 ARC。

所以基本上我需要关注,

在我的主线程 nstimer 触发一些应该在单独线程中执行的方法,该线程进行一些计算并将数据放入某个 ivar,另一个线程应该从该 ivar 读取数据并进行一些其他计算,即如果没有数据第二个线程应该等到有任何线程。

所以基本上我想听听一些建议,哪种技术是我的任务的最佳选择,使用可可线程(NSThread)、GCD 或操作队列。

也有人可以向我提供一些关于两个线程之间相互阻塞/同步方面的伪代码。

4

2 回答 2

1

既然你说一些计算应该等待其他计算完成,我想说你应该看看NSOperation并为不同的操作设置依赖关系(使用 addDependency)。

于 2012-06-03T09:05:51.350 回答
0

除非您在问题描述中留下了一些东西,否则这非常适合 GCD/块组合。事实上,我什至不会使用 NSTimer (GCD 提供了更好的选择 - 参见 dispatch_source_create 例如创建基于 GCD 的计时器),但这是你的电话,而不是问题所问的。无论如何,用GCD...

- (void)handleTimer:(NSTimer *)timer {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        __block id someObject;
        // Do work...  manipulate someObject in some manner...
        // When done, invoke other thread... main thread in this case
        dispatch_async(dispatch_get_main_queue(), ^{
            // This code is running in a different thread, and can use someObject directly
        });
    });
}
于 2012-06-03T14:01:39.617 回答