1

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

我很困惑是否应该创建一个队列并将许多操作放入其中,或者创建多个队列,每个队列都使用一个操作。

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*/        
        }); 
    }

for(int INDEX = 0; INDEX < 5; INDEX++) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
            /*some code*/        
        }); 
    }

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

4

1 回答 1

5

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

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

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

于 2012-07-28T07:49:52.370 回答