dispatch_queue_set_specific可重入的gcd

Posted diyigechengxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dispatch_queue_set_specific可重入的gcd相关的知识,希望对你有一定的参考价值。

有时候我们很希望知道当前执行的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的主要内容,如果未能解决你的问题,请参考以下文章

GCD的Queue-Specific