dispatch_queue_t queue = dispatch_queue_create("serial", DISPATCH_QUEUE_SERIAL);
dispatch_sync(queue, ^{
NSLog(@"sync1:%@", [NSThread currentThread]);
});
输出 sync1:<NSThread: 0x7fa731f06030>{number = 1, name = main}
这段代码是在主线程执行的, 在调试这段代码前,一直以为会死锁。我的理解是 dispatch_sync 同步操作会阻塞当前线程即主线程,同时队列将这个任务放到主线程执行(从输出看到),发生了双向阻塞为什么没有死锁。有请高手指证问题。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.