是否可以创建多个DispatchQueue?

时间:2018-07-11 13:37:17

标签: ios swift4 grand-central-dispatch dispatch-queue

我对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)
}

我应该怎么做才能实现自己的目标?

1 个答案:

答案 0 :(得分:2)

理论上,您可以根据需要创建任意数量的队列。您还可以在串行队列(任务相互处理)或并发队列(任务同时处理)之间进行选择

let concurrentQueue = DispatchQueue(label: "my_queue_1", attributes: .concurrent)
concurrentQueue.sync {
    //do your thing
}  

BUT::为每个呼叫创建队列是一种不好的做法。那不是队列的目的。相反,您应该使用并发队列,其中每个任务都代表一个POST调用。

甚至更好的是,您应该问自己:是否不能一次性将用户喜欢的所有页面的数组提交到服务器。这样可以减少排队的需要。

相关问题