Der folgende Code aus dem Quellcode der AlamofireWarum Alamofire verwendet die Funktion dispatch_sync() beim Erstellen einer DataTask?
let queue = dispatch_queue_create(nil, DISPATCH_QUEUE_SERIAL)
public func request(URLRequest: URLRequestConvertible) -> Request {
var dataTask: NSURLSessionDataTask!
dispatch_sync(queue) { dataTask = self.session.dataTaskWithRequest(URLRequest.URLRequest) }
let request = Request(session: session, task: dataTask)
self.delegate[request.delegate.task] = request.delegate
if startRequestsImmediately {
request.resume()
}
return request
}
Es scheint, wie es jedes Mal eine dataTask schafft, versenden es, diesen Prozess zu einem seriellen Warteschlange zu schaffen. Würde diese Maßnahme das Programm vor jeglicher Art von Multi-Thread-Traps schützen?
Ich kann nicht herausfinden, was der Unterschied ohne diese Warteschlange ist.