我对DispatchQueue
的东西(包括DispatchGroups,Qos等)不怎么老。我现在有一个顾虑。
就像,我有一个ViewController,可用于Android的ViewPager UI。在该VC中,我有一个TableView,每次更改ViewPager中的“页面”时都会重新加载。
我在TableView单元格中有一个favourite button
属性。当用户点击该按钮时,它将存储所需的信息以进行邮寄( JSON )。
每当viewWillDisappear
运行时,我都希望进行发布。在这里,我想为每个“页面”创建后台线程,并捕获已经创建的线程,以防用户点击“页面”而导致后期调用由于任何原因而无法结束。
这是我班上的东西:
var workItem1: DispatchWorkItem!
var dispatch1: DispatchQueue!
和
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
}
我应该怎么做才能实现自己的目标?
答案 0 :(得分:2)
理论上,您可以根据需要创建任意数量的队列。您还可以在串行队列(任务相互处理)或并发队列(任务同时处理)之间进行选择
let concurrentQueue = DispatchQueue(label: "my_queue_1", attributes: .concurrent)
concurrentQueue.sync {
//do your thing
}
BUT::为每个呼叫创建队列是一种不好的做法。那不是队列的目的。相反,您应该使用并发队列,其中每个任务都代表一个POST调用。
甚至更好的是,您应该问自己:是否不能一次性将用户喜欢的所有页面的数组提交到服务器。这样可以减少排队的需要。