2017-04-26 33 views
0
for (int s=0; s<masterArray.count; s++) { 

     for (int i=0; i<countOfSub1; i++) { 

    } 
} 

数据的大量在这个循环,以便得到的,我想要得到当s = 0,那么得到第二回路的所有数据再经过S = 1,则得到的所有数据之后第二个循环等等,那么我怎样才能在这个代码中设置线程。谢谢。如何使用在队列中的数据在IOS GCD

+0

对不起使用它,但我真的不明白你问什么。你能否试着重新解释你的问题? –

+0

所以你想把s = 0的所有计算委托给一个单独的队列,并且在进入第二次迭代s = 1之前让调用者等待,直到完成为止。 – ozgur

+0

@OzgurVanansever是的 – Rock

回答

1

您可以通过下面的例子

for (int s=0; s<masterArray.count; s++) {// your main loop starts here 
dispatch_semaphore_t sem; 
sem = dispatch_semaphore_create(0); 
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(concurrentQueue, ^{ 

for (int i=0; i<countOfSub1; i++) {// Inner loop in a thread 
//your work here 
} 
dispatch_semaphore_signal(sem); 
}); 
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); // main loop waiting to be triggered from sub loop. (inner loop) 
} 
+0

@salman谢谢你回答我,但这不起作用。 – Rock

+0

@Rock它有什么问题? –

+0

按您的代码2017年4月26日16:17:40.848 DietPlan [4708:161628] S:0 S:1 I:0 I:0 I:1个 S:2 I:1 我:2 I:2个 S:3 I:0 I:3 I:3 I:1 I:4 这种类型的数据DISPLY的 – Rock