美文网首页
GCD 信号量控制并发 (dispatch_semaphore)

GCD 信号量控制并发 (dispatch_semaphore)

作者: ZebZheng | 来源:发表于2018-06-07 10:00 被阅读0次

主要用途是GCD中快速的控制并发,也就是我们想等代码块内容执行完毕再执行下一步操作

在GCD中有三个函数是semaphore的操作,分别是:

  dispatch_semaphore_create   创建一个semaphore

  dispatch_semaphore_signal   发送一个信号

  dispatch_semaphore_wait    等待信号

  简单的介绍一下这三个函数,

dispatch_semaphore_create有一个整形的参数,我们可以理解为信号的总量

dispatch_semaphore_signal是发送一个信号,自然会让信号总量加1

dispatch_semaphore_wait等待信号,当信号总量少于0的时候就会一直等待,否则就可以正常的执行,并让信号总量-1

例子

//crate的value表示,最多几个资源可访问,想等多少个代码块结束就写多少

    dispatch_semaphore_t semaphore = dispatch_semaphore_create(2);   

__block CLPlacemark* start;

    [self.viewModel getAddressString:_textfiled.text completionHandler:^(NSArray *placemarks, NSError *error) {     

       //发出已完成的信号

        dispatch_semaphore_signal(semaphore);

    }];

    //等待执行,不会占用资源

    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

相关文章

网友评论

      本文标题:GCD 信号量控制并发 (dispatch_semaphore)

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