将许多任务分派到一个队列,或者每个队列分配一个任务

Dee*_*pak 1 cocoa-touch objective-c grand-central-dispatch

我想一次启动多个线程,所以我使用了以下代码.

我很困惑我是否应该创建一个队列并在其中放入许多操作,或者通过单个操作创建多个队列.

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
    for(int INDEX = 0; INDEX < 5; INDEX++) {
        dispatch_async(queue, ^{
            /*some code*/        
        }); 
    }
Run Code Online (Sandbox Code Playgroud)
for(int INDEX = 0; INDEX < 5; INDEX++) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
            /*some code*/        
        }); 
    }
Run Code Online (Sandbox Code Playgroud)

哪个是最佳的?另外,GCD中的线程数是否有限制?

Jos*_*ell 5

你没有多个队列.您正在检索其中一个全局队列.您的应用程序中有三个,它们既不能被创建也不能被您销毁.

此外,即使您正在创建队列(使用dispatch_queue_create()),您也不一定要为每个队列或任何新线程创建新线程.Grand Central Dispatch系统为您管理所有线程.GCD不限制您可以创建的队列数.

请阅读GCD参考并发编程指南.