相关疑难解决方法(0)

1126
推荐指数
17
解决办法
84万
查看次数

DispatchQueue.main.async和DispatchQueue.main.sync之间的区别

我一直在使用DispatchQueue.main.async很长一段时间来执行一些与UI相关的操作.但Swift提供了DispatchQueue.main.async和DispatchQueue.main.sync,两者都在主队列中执行.那么有谁可以告诉我他们之间的区别?我什么时候应该使用它们?先感谢您.

DispatchQueue.main.async {
    self.imageView.image = imageView
    self.lbltitle.text = ""

}

DispatchQueue.main.sync {
    self.imageView.image = imageView
    self.lbltitle.text = ""
}
Run Code Online (Sandbox Code Playgroud)

concurrency multithreading ios swift swift3

78
推荐指数
3
解决办法
5万
查看次数

GCD中的"全局队列"和"主队列"之间有什么区别?

在其他一些方面,有以下两种方式来获取队列GCD:

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_get_main_queue();
Run Code Online (Sandbox Code Playgroud)

如果我没有完全错误,"主队列"正在主线程上执行,并且适用于执行UI工作的"回调"块.

这是否意味着"全局队列"是在后台线程上运行的?

iphone concurrency grand-central-dispatch ios

56
推荐指数
4
解决办法
4万
查看次数

Grand Central Dispatch async vs sync

我正在阅读关于GCD调度队列的文档,并且在其中他们说队列是FIFO,所以我想知道这对异步/同步调度有什么影响?

从我的理解异步执行事情的顺序,它获取的东西,而同步执行串行..

但是当你编写你的GCD代码时,你决定了事情发生的顺序..所以只要你知道你的代码中发生了什么,你应该知道事情执行的顺序.

我的问题是,这里有异步的好处吗?我对这两件事的理解中遗漏了什么.

iphone grand-central-dispatch ios

29
推荐指数
4
解决办法
1万
查看次数

Swift3 GCD中的main.async vs main.sync()vs global().async

示例A: - 这会导致App Crash.

DispatchQueue.main.async {           
        let url = URL(string: imageUrl)
        do {
             let data = try Data(contentsOf: url!)
                DispatchQueue.main.sync {
                    self.imageIcon.image = UIImage(data: data)
                }
            }
Run Code Online (Sandbox Code Playgroud)

例B: - 但事实并非如此

DispatchQueue.global().async {  
        let url = URL(string: imageUrl)
        do {
            let data = try Data(contentsOf: url!)
                DispatchQueue.main.sync {
                    self.imageIcon.image = UIImage(data: data)
                }
            }
Run Code Online (Sandbox Code Playgroud)

据我所知,

  • x.sync意味着在主线程/ UI线程中执行操作而x.async意味着在后台线程中执行操作.
  • 全局意味着执行具有并发队列的东西,即并行任务

Quest1: - 那么为什么我的应用程序在后台线程(即main.async)执行任务时崩溃,而不是调用主线程来更新UI.

Quest2: - main.async和global().async有什么区别.

multithreading asynchronous ios swift swift3

7
推荐指数
3
解决办法
5082
查看次数