我想一次启动多个线程,所以我使用了以下代码。
我很困惑我是否应该创建一个队列并在其中放入许多操作,或者通过一次操作创建多个队列。
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中的线程数是否有限制?
答案 0 :(得分:5)
你没有多个队列。你是retrieving one of the global queues。你的应用程序中有三个,你既不能创建也不能销毁它们。
此外,即使您正在创建队列(使用dispatch_queue_create()
),也不一定要为每个队列或任何新线程创建新线程。 Grand Central Dispatch系统为您管理所有线程。 GCD不限制您可以创建的队列数。