gpt4 book ai didi

ios - 当主线程针对另一个调度队列发出 dispatch_sync 时,主队列/主线程会发生什么?

转载 作者:行者123 更新时间:2023-11-28 21:19:59 25 4
gpt4 key购买 nike

假设我在主线程上调用下面的方法。如果在调用该方法时其他线程正在对数组进行写操作,则 dispatch_sync 将阻塞。但它阻塞在另一个队列(不是主队列)上。当它被阻塞时,主队列上的状态是什么(方法在 disaptch_sync 返回之前不能前进,但这是否被视为主队列上的异步调用)。例如:主队列会响应 UI 事件吗?如果是,在响应用户事件时,dispatch_sync 返回时方法调用的状态会发生什么变化?

-(id) objectAtIndex:(NSUInteger)index
{
__block id obj;
dispatch_sync(self.dataAccessQ, ^{
obj = self.embeddedArray[index];
});
return obj;
}

最佳答案

是不是主队列都无所谓。无论队列用于调用 objectAtIndex: 都会阻塞 dispatch_sync 调用,直到它完成。

如果您在主队列上调用此代码,它会像任何其他队列一样阻塞。在此期间,不会处理任何用户事件。在此期间,用户界面将显示为已锁定。完成后,用户界面将再次正常工作。

关于ios - 当主线程针对另一个调度队列发出 dispatch_sync 时,主队列/主线程会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40100237/

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