在 swift3 中实现屏障

Posted

技术标签:

【中文标题】在 swift3 中实现屏障【英文标题】:Implement barrier in swift3 【发布时间】:2017-04-17 23:09:43 【问题描述】:

我正在尝试将多张图片上传到 Firebase 存储,上传任务完成后应用需要执行一些操作。我做了一些研究,发现屏障在这种情况下很有用。我关注了tutorial,但我的代码似乎无法正常工作。我错过了什么?代码如下:

func uploadImages(completion: (()->Void))
    // creating a queue
    let uploadImagesQueue = DispatchQueue(label: "upLoadImages", attributes: .concurrent)
    for i in 0..<numOfImages
        uploadImagesQueue.async
            // upload each of the images
        
    
    uploadImagesQueue.async(flags: .barrier)
        completion()
    

此代码的问题是completion() 在所有上传部分完成之前运行。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

也许在 uploadImagesQueue.async 块中,您异步上传了图像(通过使用 uploadTask!?)。然后在提交 uploadTask 时异步块完成。 不要使用 DispatchQueue,只需使用 Firebase 的 uploadTask。

【讨论】:

以上是关于在 swift3 中实现屏障的主要内容,如果未能解决你的问题,请参考以下文章

内存屏障是如何工作的?

在 TableView 中实现 CoreData 时遇到问题

在 C++11 中实现 boost::barrier

在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航

在 Swift 3 中实现 fetchedresultsviewcontroller

Windows 中的进程间同步屏障