博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dispatch_queue_set_specific可重入的gcd
阅读量:5732 次
发布时间:2019-06-18

本文共 646 字,大约阅读时间需要 2 分钟。

有时候我们很希望知道当前执行的queue是谁,比如UI操作需要放在main queue中执行。如果可以知道当前工作的queue是谁,就可以很方便的指定一段代码操作在特定的queue中执行。这种做法让GCD方法达到可重入效果:

dispatch_queue_set_specific 标记队列  

    static int specificKey;  

    CFStringRef specificValue = CFSTR("queueA");  

    dispatch_queue_set_specific(queueA,  

                                   &specificKey,  

                                (void*)specificValue,  

                                    (dispatch_function_t)CFRelease);  

  dispatch_sync(queueB, ^{  

          dispatch_block_t block = ^{  

      //do something  

      };  

              CFStringRef retrievedValue = dispatch_get_specific(&specificKey);  

      if (retrievedValue) {  

             block();  

          } else {  

         dispatch_sync(queueA, block);  

      }  

  });  

转载于:https://www.cnblogs.com/diyigechengxu/p/9213171.html

你可能感兴趣的文章
同步系统设置时间格式
查看>>
javascript 和 native obj-c 交互数据的开源工具
查看>>
nginx虚拟主机配置
查看>>
spring事务处理
查看>>
ubuntu 14.10安装android studio中遇到的问题
查看>>
uva 11462
查看>>
Delphi读写UTF-8、Unicode格式文本文件
查看>>
Indy 10 文件传输
查看>>
python10min手写一个服务器内存监控系统
查看>>
springboot2.0集成javamelody应用监测
查看>>
代码规范的那些事儿
查看>>
lua协程
查看>>
关于在firefox下SSL error renegotiation not allowed的问题
查看>>
Git管理工具对比(GitBash、EGit、SourceTree)
查看>>
大数据沉淀与O2O在移动化时代的趋势与演变
查看>>
linux常用命令参数英文解释
查看>>
TweetBot SpinnerView
查看>>
结构体中最后一个成员为char[1]或char[0]
查看>>
开源 java CMS - FreeCMS2.8 静态化管理
查看>>
strlen和mb_strlen的区别
查看>>