GCD-dispatch

    xiaoxiao2021-03-25  15

    创建一个任务组,把一组任务提交到一个或多个队列里面。 可以监听这个任务组在某个确定的队列里完成的通知,以执行后续的任务。 若提交到了多个队列里面,某一个队列完成任务的时候,其他队列不一定完成。 队列里的任务根据队列的属性来串行或者并行执行 示例:

    - (IBAction)gcdGroupButtonAction:(UIButton *)sender { //创建一个并行执行队列 dispatch_queue_t queue = dispatch_queue_create("queueIdentifier", DISPATCH_QUEUE_CONCURRENT); dispatch_group_t group = dispatch_group_create(); //以下两个任务执行顺序不定,因为它们是并行任务 dispatch_group_async(group, queue, ^{ for (int i = 0; i<5; i++) { NSLog(@"@thread:%@-------%i",[NSThread currentThread],i); } }); dispatch_group_async(group, queue, ^{ for (int i = 0; i<5; i++) { NSLog(@"#thread:%@-------%i",[NSThread currentThread],i); } }); //当指定任务组的指定队列全部执行完成后执行如下代码 dispatch_group_notify(group, queue, ^{ NSLog(@"在%@队列中的任务组%@已执行完",queue,group); }); }

    输出如下:

    @thread:{number = 3, name = (null)}——-0 @thread:{number = 3, name = (null)}——-1 @thread:{number = 3, name = (null)}——-2 @thread:{number = 3, name = (null)}——-3 @thread:{number = 3, name = (null)}——-4 #thread:{number = 3, name = (null)}——-0 #thread:{number = 3, name = (null)}——-1 #thread:{number = 3, name = (null)}——-2 #thread:{number = 3, name = (null)}——-3 #thread:{number = 3, name = (null)}——-4 在 < OS_dispatch_queue: queueIdentifier[0x17016ae00]>队列中的任务组已执行完

    转载请注明原文地址: https://ju.6miu.com/read-114335.html

    最新回复(0)