GCD--dispatch_apply

dispatch_apply直到所有任务都执行完毕,才会返回。

例如:

    dispatch_apply(5, dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT), ^(size_t n) {
        for (int i=0; i<2; i++) {
            sleep(1);
            NSLog(@"%@ -- %d",[NSThread currentThread], i);
        }
    });
    NSLog(@"all finished");

输出结果

2018-12-01 23:14:59.933527+0800 dispatch_apply-Demo[50299:2325437] {number = 1, name = main} -- 0
2018-12-01 23:14:59.933550+0800 dispatch_apply-Demo[50299:2325496] {number = 5, name = (null)} -- 0
2018-12-01 23:14:59.933560+0800 dispatch_apply-Demo[50299:2325497] {number = 4, name = (null)} -- 0
2018-12-01 23:14:59.933596+0800 dispatch_apply-Demo[50299:2325494] {number = 3, name = (null)} -- 0
2018-12-01 23:15:00.934084+0800 dispatch_apply-Demo[50299:2325437] {number = 1, name = main} -- 1
2018-12-01 23:15:00.937887+0800 dispatch_apply-Demo[50299:2325497] {number = 4, name = (null)} -- 1
2018-12-01 23:15:00.937888+0800 dispatch_apply-Demo[50299:2325496] {number = 5, name = (null)} -- 1
2018-12-01 23:15:00.937980+0800 dispatch_apply-Demo[50299:2325494] {number = 3, name = (null)} -- 1
2018-12-01 23:15:01.935680+0800 dispatch_apply-Demo[50299:2325437] {number = 1, name = main} -- 0
2018-12-01 23:15:02.937273+0800 dispatch_apply-Demo[50299:2325437] {number = 1, name = main} -- 1
2018-12-01 23:15:02.937622+0800 dispatch_apply-Demo[50299:2325437] all finished

你可能感兴趣的:(GCD--dispatch_apply)