GCD之dispatch semaphore

  • dispatch semaphore
    1.dispatch semaphore是持有计数的信号,该计数是多线程编程中的计数类型信号。计数为0时等待,计数为1或大于1时,减去1而不等待。
    2.dispatch_semaphore_wait函数等待dispatch semaphore的计数值大于或等于1,当计数值大于等于1,或者等待中计数值大于等于1时,对该计数进行减法并从dispatch_semaphore_wait函数返回。
    3.dispatch_semaphore_wait函数的返回值也与dispat
    ch_group_wait函数相同。
dispatch_time_t time;//定义dispatch_time_t;
long result = dispatch_semaphore_wait(semaphore,time);
if(result == 0){
//在time定义的待机等待时间中如果计数值大于或者等于1,则返回0,可执行需要进行排他控制的任务。任务结束通过dispatch_semaphore_signal函数将dispatch semaphore的计数值加1.
}else{
//计数值为0,因此在等待指定时间后返回非0;
}
  • dispatch_once
    diapatch_once函数是保证在应用程序执行中只执行一次指定的api。
static dispatch_once_t token;
dispatch_once(&token,^{
});

这个函数比用控制变量控制更可靠。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近颇花了一番功夫把多线程GCD人的一些用法总结出来,一来帮自己巩固一下知识、二来希望能帮到对这一块还迷茫...
    人活一世阅读 297评论 1 1
  • GCD是异步执行任务的技术支之一,开发者只需要将想要执行的block任务添加到适当的Dispatch Queue(...
    zziazm阅读 1,778评论 0 8
  • 章节目录 什么是GCD? 如何在多条路径中执行CPU命令列? 即使多线程存在很多问题(如数据竞争、死锁、线程过多消...
    DrunkenMouse阅读 883评论 1 13
  • 多线程概念 线程线程指的是:1个CPU执行的CPU命令列为一条无分叉路径 多线程这种无分叉路径不止一条,存在多条即...
    我系哆啦阅读 606评论 0 5
  • 沈宇阅读 175评论 0 0