美文网首页
GCD控制线程数量

GCD控制线程数量

作者: Crassus | 来源:发表于2018-05-07 13:09 被阅读0次

1.GCD控制线程数量

- (void)gcd_max_queue
{
    dispatch_queue_t taskConcurrentQueue = dispatch_queue_create("com.task", DISPATCH_QUEUE_CONCURRENT);
    dispatch_queue_t serialQueue = dispatch_queue_create("com.serial", DISPATCH_QUEUE_SERIAL);
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(4);
    for(NSIntegeri =0; i <10; i++) {
        dispatch_async(serialQueue, ^{        dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);
            dispatch_async(taskConcurrentQueue, ^{
                NSLog(@"开始执行任务 %@", [NSThreadcurrentThread]);
                sleep(i%4);
                NSLog(@"执行任务结束 %@", [NSThreadcurrentThread]);
                dispatch_semaphore_signal(semaphore);
            });
        });
    }
}

2.GCD控制线程数量+线程任务结束通知处理

- (void)gcd_max_queue2
{
    dispatch_group_t group = dispatch_group_create();
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(10);
    dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    for(NSIntegeri =0; i <20; i++) {
        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
        dispatch_group_async(group, queue, ^{
            NSLog(@"开始执行任务 %@", [NSThreadcurrentThread]);
            sleep(i%4);
            NSLog(@"执行任务结束 %@", [NSThreadcurrentThread]);
            dispatch_semaphore_signal(semaphore);
        });
    }

    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"总任务结束!!! %@", [NSThreadcurrentThread]);
    });
}

相关文章

  • GCD控制线程数量

    1.GCD控制线程数量 2.GCD控制线程数量+线程任务结束通知处理

  • GCD进阶

    GCD 控制线程数量 GCD 不像NSOperation 那样有直接提供线程数量控制方法,但是通过GCD的sema...

  • GCD 文章理解

    GCD详解 1,GCD如何控制线程的最大并发数? (1,通过信号量的大小控制线成并发执行的数量) (2,一定数量的...

  • GCD如何控制线程数量

    多线程的使用,在开发中始终是一个绕不开的话题,关于多线程的实现方式,iOS目前也支持4种方式来实现,分别是: pt...

  • 关于GCD中的线程数

    前言 gcd用起来很方便,虽说是由系统去控制线程的创建,销毁,调配。我们无需操心。但是滥用的话也会引起线程数量过多...

  • iOS多线程-并发队列

    GCD 并发队列 并发队列,异步执行 问题:1.会开几条线程?会开多条线程,线程数量是由GCD来决定2.会顺序执行...

  • iOS - dispatch_semaphore 和 NSCon

    GCD 信号量控制并发 (dispatch_semaphore) 当我们在处理一系列线程的时候,当数量达到一定量,...

  • 06 GCD 并发队列

    03 GCD-并发队列 并发队列,异步执行 问题:1.会开几条线程?会开多条线程,线程数量是由GCD来决定2.会顺...

  • 谈谈对多线程和GCD的理解

    多线程(GCD) GCD是异步执行任务的技术之一,通过Dispatch Queue来控制任务的执行,线程管理由系统...

  • python多线程并发数量控制

    python多线程如果不进行并发数量控制,在启动线程数量多到一定程度后,会造成线程无法启动的错误。控制多线程并发数...

网友评论

      本文标题:GCD控制线程数量

      本文链接:https://www.haomeiwen.com/subject/djimrftx.html