gpt4 book ai didi

swift - 具有并发和串行的异步任务

转载 作者:行者123 更新时间:2023-11-28 06:11:05 27 4
gpt4 key购买 nike

我不确定标题是否合适,但我会尽力解释我的意思。

所以我有这样的代码:

func syncData(forUser user: User, endPoints: [EndPoint]) {
serialQueue.async{
for endPoint in endPoints {
// download the data in the internet using the provided endPoint (API). This may take longer to finish depends on the connection speed and data begin downlod
}
}
}

此方法“连续”执行多个任务。每个用户的任务应该“连续”完成,因为它们相互依赖,并且这种方法可以正常工作,它可以从 Internet 下载数据。

问题是下载数据需要时间。假设 user1 执行数据下载并且该过程需要时间才能完成,而 user1 的任务正在处理 user2 也执行数据下载。由于 user1 尚未完成,因此 user2 将不得不等待,直到 user1 的一切都完成。因此,我的 user2 进度条保持为 0,直到所有 user1 完成。

有没有办法将 user1 和 user2 的所有任务(分别)分组,并且仍然按顺序完成。而且每组要同时进行, 这样每个小组就不会等到另一个小组完成后再执行任务。

最佳答案

根据每个用户的唯一 ID 为每个用户创建一个单独的队列。然后在此函数中,在分配给该特定用户的队列上运行您的代码。

您可以维护一个包含所有队列的数组。当用户请求一个 Action 时,查看他们是否已经在数组中分配了一个队列。如果是,则将任务放入该队列。如果没有,则创建一个新队列,将其分配给该用户并将任务放在上面。

关于swift - 具有并发和串行的异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46577742/

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