如何在ios中使用GCD获取队列中的数据 for(int s=0;s

如何在ios中使用GCD获取队列中的数据 for(int s=0;s,ios,objective-c,multithreading,grand-central-dispatch,Ios,Objective C,Multithreading,Grand Central Dispatch,您可以通过以下示例使用它 for (int s=0; s<masterArray.count; s++) { for (int i=0; i<countOfSub1; i++) { } } 用于(int s=0;sSorry但我真的不明白你在问什么。你能试着重新表述一下你的问题吗?所以你想把s=0的所有计算委托给一个单独的队列,让调用者在第二次迭代s=1之前等待它完成吗?@OzgurVatansever Yes我相信你正在运行这段代码n一个主线程,因此让它

您可以通过以下示例使用它

for (int s=0; s<masterArray.count; s++) {

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

    }
}

用于(int s=0;sSorry但我真的不明白你在问什么。你能试着重新表述一下你的问题吗?所以你想把
s=0
的所有计算委托给一个单独的队列,让调用者在第二次迭代
s=1
之前等待它完成吗?@OzgurVatansever Yes我相信你正在运行这段代码n一个主线程,因此让它在每次迭代中等待在性能上有很多缺点。只需创建一个只有一个线程的队列,并将在内部循环中完成的作业异步分配到该队列。我已经在使用主线程,但问题是在视图中显示数据需要一些时间。@Rock它有什么问题?如根据您的代码2017-04-26 16:17:40.848饮食计划[4708:161628]S:0s:1i:0i:0i:1s:2i:1i:2i:2s:3i:0i:3i:3i:1i:4这种类型的数据显示我想要S=0然后I=0到I=countsub1.count然后S=1那么,I=0到I=countsub1.count等等……你能告诉我你是如何使用上面的代码吗。
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)
}