我在具有高优先级的全局调度队列上运行CBPeripheralManager(它是初始化选项之一)。从该队列中,我创建了一个调度计时器,以在自定义串行队列上执行重复任务。当重复的任务完成后,我从dispatch_async块调用一个成员函数,该块再次指定全局队列。
总而言之,我尝试在全局调度队列上对字段进行委托回调。然后在自定义串行队列中调用重复的定时任务。最后,我想从串行队列中调用一个函数来在全局队列上运行。
最终函数是否在全局队列中的串行队列之外运行?全局队列的dispatch_asyn包含在串行队列块中。
答案 0 :(得分:2)
您的代码如下,对吧?
let priority = DISPATCH_QUEUE_PRIORITY_HIGH
let globalQueue = dispatch_get_global_queue(priority, 0)
dispatch_async(globalQueue) {
//
// This block is invoked on globalQueue
// do CBPeripheralManager task
//
let serialQueue = dispatch_queue_create("custom", nil)
let timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, serialQueue)
// set timer
dispatch_source_set_event_handler(timer) {
//
// This block is invoked on serialQueue
// do task
//
if finishedRepeatedTasks {
dispatch_async(globalQueue) {
// (A)
// This block is invoked on globalQueue
// call a member function
//
}
}
}
dispatch_resume(timer)
}
你是说在全局队列上调用了(A)
块call a member function
?
是