伙计我需要一些帮助才能在iOS中构建我的多线程。
我在代码中使用ARC。
基本上我需要关注,
在我的主线程中,nstimer触发了一些应该在一个单独的线程中执行的方法,该线程进行一些计算并将数据放入某些ivar,另一个线程应该从该ivar读取数据并进行其他计算,即如果有是没有数据,第二个线程应该等到有任何数据。
所以基本上我想听听一些建议哪些技术是我的任务的最佳选择,使用可可线程(NSThread),GCD或操作队列。
也有人可以在两个线程之间的相互阻塞/同步方面为我提供一些伪代码。
答案 0 :(得分:1)
由于您说某些计算应该等待其他计算完成,我会说您应该查看NSOperation并为不同的操作设置依赖关系(使用addDependency)。
答案 1 :(得分: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
});
});
}