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的主要内容,如果未能解决你的问题,请参考以下文章