GCD 文章理解

2018-04-19  本文已影响1人  Taoai_M

GCD详解

1,GCD如何控制线程的最大并发数?

(1,通过信号量的大小控制线成并发执行的数量)

(2,一定数量的串行队列代替并发队列,达到控制线程的数量)

(3,使用NSOperationQueue maxConcurrentOperationCount 属性控制线程的最大并发数)

GCD如何控制最大并发数

2, 详细介绍dispatch_block

dispatch_block_t

3,dispath_group(任务组)

dispatch_group_enter && dispatch_group_leave 成对出现

group = dispatch_group_create();

    queue = dispatch_get_global_queue(0, 0);

    dispatch_group_enter(group);

    dispatch_group_async(group, queue, ^{

        NSLog(@"%@---block1结束。。。",[NSThreadcurrentThread]);

        sleep(3);

        dispatch_group_leave(group);

    });

    NSLog(@"%@---1结束。。。",[NSThreadcurrentThread]);

    dispatch_group_enter(group);

    dispatch_group_async(group, queue, ^{

        NSLog(@"%@---block2结束。。。",[NSThreadcurrentThread]);

        sleep(3);

        dispatch_group_leave(group);

    });

    NSLog(@"%@---2结束。。。",[NSThreadcurrentThread]);

    dispatch_group_notify(group, queue, ^{

        NSLog(@"%@---all结束。。。",[NSThreadcurrentThread]);

    });

log:

2018-04-19 17:04:09.554847+0800 GCD_Group[1928:603701] {number = 1, name = main}---1结束。。。

2018-04-19 17:04:09.554860+0800 GCD_Group[1928:603735] {number = 5, name = (null)}---block1结束。。。

2018-04-19 17:04:09.555050+0800 GCD_Group[1928:603734] {number = 4, name = (null)}---block2结束。。。

2018-04-19 17:04:09.555053+0800 GCD_Group[1928:603701] {number = 1, name = main}---2结束。。。

2018-04-19 17:04:12.560401+0800 GCD_Group[1928:603734] {number = 4, name = (null)}---all结束。。。

4,

上一篇 下一篇

猜你喜欢

热点阅读