iOS GCD dispatch_semaphore


例如


dispatch_semaphore_t semaphore = dispatch_semaphore_create(10);

参数为10,可以理解为信号总量为10


dispatch_semaphore_signal(semaphore);

发送一个信号,会让信号量总量为+1


dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

每次调用会使信号总量-1,当信号总量小于等于0时,线程会等待(就是阻塞);当线程在等待时,再次调用dispatch_semaphore_signal(semaphore)时会使线程继续往下执行(就是通畅)。



练习理解:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Managing Units of Work(管理工作单位) 调度块允许您直接配置队列中各个工作单元的属性。它们还...
    edison0428阅读 12,478评论 0 1
  • 联系人:石虎QQ: 1224614774 昵称:嗡嘛呢叭咪哄 dispatch_semaphore是GCD用来同步...
    石虎132阅读 4,821评论 3 20
  • 信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待。当一个信号量被信号通知,其计数会被增加...
    面朝对象_春暖花开阅读 3,207评论 0 0
  • 許多人之間的關係 越走越遠 以前看一眼就明瞭 彼此的需要 現在 就算是扯開喉嚨的吼叫 對方都不一定聽的到 在街的轉...
    蔡振源阅读 1,643评论 0 1
  • 女儿即将小升初,给她报了几所感觉还有点名气的初中组织的招生考试,主要考虑呢,一是让她多点经历锻炼锻炼;二是若能考上...
    山高人为峰1阅读 2,548评论 0 2

友情链接更多精彩内容