如何在不引入数据竞争的情况下检查网络请求是否已完成?

时间:2017-11-03 07:34:17

标签: ios swift multithreading cocoa grand-central-dispatch

我有这个简单的代码来执行网络请求:

class Downloader {
  var isCompleted = false
  func start() {
    URLSession.shared.dataTask(with: url) { data, response, error in
      isCompleted = true
    }
  }
}

我想在其他代码中检查isCompleted以确定请求是否已完成。

问题是我似乎以这种方式创建了数据竞争,因为该标志是在后台队列中设置的,并且可能会在任何队列中进行检查。

有没有办法使用GCD使isCompleted线程安全?

0 个答案:

没有答案