{
dispatch_queue_t myQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
dispatch_sync(myQueue, ^{
//Do EXTREME PROCESSING!!!
for (int i = 0; i< 100; i++) {
[NSThread sleepForTimeInterval:.05];
NSLog(@"%i", i);
}
dispatch_sync(dispatch_get_main_queue(), ^{
[self updateLabelWhenBackgroundDone];
});
});
}
我在这里陷入僵局。根据苹果文档
“dispatch_sync”:“将块提交到调度队列以进行同步执行。与 dispatch_async 不同,此函数在块完成之前不会返回。调用此函数并以当前队列为目标会导致死锁。”。
但是,我先做外层dispatch_sync
,myQueue
然后再做内层ditpatch_sync
的另一个队列是`main_queue。
无法找出死锁的原因。任何意见/帮助在这里表示赞赏。