在編程過程當中,咱們常常會用到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); });