for (int s=0; s<masterArray.count; s++) {
for (int i=0; i<countOfSub1; i++) {
}
}
数据的大量在这个循环,以便得到的,我想要得到当s = 0,那么得到第二回路的所有数据再经过S = 1,则得到的所有数据之后第二个循环等等,那么我怎样才能在这个代码中设置线程。谢谢。如何使用在队列中的数据在IOS GCD
for (int s=0; s<masterArray.count; s++) {
for (int i=0; i<countOfSub1; i++) {
}
}
数据的大量在这个循环,以便得到的,我想要得到当s = 0,那么得到第二回路的所有数据再经过S = 1,则得到的所有数据之后第二个循环等等,那么我怎样才能在这个代码中设置线程。谢谢。如何使用在队列中的数据在IOS GCD
您可以通过下面的例子
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)
}
对不起使用它,但我真的不明白你问什么。你能否试着重新解释你的问题? –
所以你想把s = 0的所有计算委托给一个单独的队列,并且在进入第二次迭代s = 1之前让调用者等待,直到完成为止。 – ozgur
@OzgurVanansever是的 – Rock