gpt4 book ai didi

ios - 从并发线程同时在主 DispatchQueue 上调度 block 是否安全?

转载 作者:行者123 更新时间:2023-11-28 13:24:50 26 4
gpt4 key购买 nike

在我的代码中,我使用 for 循环将并发任务分派(dispatch)到全局分派(dispatch)队列,如下所示:

for collectionMember in myCollection {
DispatchQueue.global(qos: .default).async {

// do stuff here with collectionMember and store in variable "result"

DispatchQueue.main.async {
// code using variable "result" that must be executed serially on main thread
// because accesses shared resources
}
}

我是整个 Grand Central Dispatch 的新手,我担心当不同的并发线程尝试在主 DispatchQueue 上调度 block 时,会出现一些内存问题,因为它们都访问主 DispatchQueue。

我希望并发线程在完成时向主 DispatchQueue 添加一个 block ,而不会出现线程安全问题。

我是否必须在将代码分派(dispatch)到主 DispatchQueue 的 block 周围使用锁,或者调度 block 线程是否安全?

最后,如果我有任何错误或者有更简单的方法来解决这个问题,请告诉我。谢谢!

最佳答案

不需要锁。主队列一把锁!这就是重点(嗯,很多重点)。它是一个串行队列;只要其他东西已经在执行,就不能在主队列上开始执行。主线程内没有并发。你所做的是完全正确的;请注意,您可能正在排列一大堆要在主线程上执行的 block ,一次一个。但这不是问题,除非这里有很多。

关于ios - 从并发线程同时在主 DispatchQueue 上调度 block 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58574281/

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