gpt4 book ai didi

iphone - 关于dispatch_queue_t和dispatch_sync的调用

转载 作者:行者123 更新时间:2023-11-28 22:53:32 25 4
gpt4 key购买 nike

为什么需要代码 if (dispatch_get_current_queue() == socketQueue)?为什么我们不能直接使用dispatch_sync(socketQueue, block)???

提前致谢!

- (BOOL)isConnected
{
__block BOOL result = NO;

dispatch_block_t block = ^{
result = (flags & kConnected) ? YES : NO;
};

if (dispatch_get_current_queue() == socketQueue)
block();
else
dispatch_sync(socketQueue, block);

return result;
}

顺便说一句,代码来自XMPPFramework

最佳答案

您不能调用 dispatch_sync 来调度当前串行队列上的 block ,因为这会死锁。 Dispatch_sync 等待直到 block 执行完毕,但它永远不会在当前 block 完成运行之前开始运行。

关于iphone - 关于dispatch_queue_t和dispatch_sync的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11305450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com