首页 > 其他 > 详细

dispatch_queue_set_specific可重入的gcd

时间:2018-06-22 14:23:51      阅读:397      评论:0      收藏:0      [点我收藏+]

有时候我们很希望知道当前执行的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);  

      }  

  });  

dispatch_queue_set_specific可重入的gcd

原文:https://www.cnblogs.com/diyigechengxu/p/9213171.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!