调度正确的队列dispatch_get_specific

时间:2016-10-10 04:27:24

标签: ios

我正在查看其他代码,发现了这个:

//Obj-C
if (dispatch_get_specific(moduleQueueTag))
    block();
else
    dispatch_sync(moduleQueue, block);

我正在尝试在Swift中做同样的事情。是否需要这样做:

    if dispatch_get_specific(moduleQueueTag) != nil {
        block()
    } else {
        dispatch_async(moduleQueue) {
            block()
        }
    }

或者可以这样做:

        dispatch_async(moduleQueue) {
            block()
        }

1 个答案:

答案 0 :(得分:0)

不要从传递给函数调用的同一队列上执行的任务中调用dispatch_sync函数。这样做会使队列死锁。如果需要dispatch到当前队列,请使用dispatch_async函数异步执行此操作。

另外,我按照您提供的链接和dispatch_sync的说明我读了这个:

我在文档中发现了这一点(上一章): https://developer.apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW28