![](/img/trans.png)
[英]How to shift operation from main queue to background releasing the main queue
[英]Can invoking iOS main thread operation from background queue interrupt a method call?
可以说我有一个刚刚完成的后台队列,最后它将在主线程上做一些事情:
-(void) backgroundThreadFunction {
//Some stuff on background thread.
dispatch_async(dispatch_get_main_queue(), ^{
[self doSomeNetworkStuff];
});
}
可以说在主线程中,已经有一个正在运行的方法:
-(void)myMainMethod{
//Running some tasks.
}
iOS是否要等到myMainMethod完成才能允许doSomeNetworkStuff()运行? 还是允许它中断?
不,它不能打扰。 一行dispatch_async(dispatch_get_main_queue(), ^{
将块添加到主队列中。当前方法已在主队列上运行。
就像在银行与一个柜员站在一起。 人们排队等候,轮到他们了。 当前的客户不会被下一个排队的人打扰(让我们假设这是礼貌的排队)。
一旦myMainMethod
(当前客户)完成(并且调用它的方法也完成,等等),然后将处理队列中的下一个块(下一个客户)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.