用GCD来处理大量for loop任务

在编程过程中,我们经常会用到for循环,而且for循环要做很多相关的任务。比如:

for (i = 0; i < count; i++) { 

   //do a lot of work here. 

   doSomething(i); 

}

如果for循环中处理的任务是可并发的,显然放到一个线程中处理是很慢的,GCD提供两个函数dispatch_apply和dispatch_apply_f,dispatch_apply是用于Block的,而dispatch_apply_f可以用于c函数,它们可以替代可并发的for循环,来并行的运行而提高执行效率。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 

dispatch_apply(count, queue, ^(size_t i) { 

   //do a lot of work here. 

   doSomething(i); 

});

 

 

posted @ 2013-12-10 15:27  Story Of My Life  阅读(539)  评论(0编辑  收藏  举报