使用“performSelectorOnMainThread”在iOS上进行上下文切换

时间:2012-02-03 11:47:26

标签: ios multithreading synchronization mutex critical-section

我在iOS上遇到了奇怪的线程问题。考虑一个这样的简单方法:

- (BOOL)doSomething
{
   [self doA];
   [self doB];
}

此方法在主线程的上下文中运行。我需要从工作线程调用此方法。我为此目的使用performSelectorOnMainThread

如果我按照此处的说明执行所有操作。可以在doA`doB之间进行上下文切换吗?

(我不这么认为,我只是想确保我的理解就在这里)

1 个答案:

答案 0 :(得分:1)

通过“上下文切换”我假设您的意思是主线程切换到其他主线程事件(因为您可以随时切换到另一个工作线程)。

但是,主线程将在执行任何其他操作之前完成所有doSomething。

摘自performSelectorOnMainThread

  

此方法将消息排入主线程的运行循环   使用常见的运行循环模式 - 即与之相关的模式   NSRunLoopCommonModes常量。 作为正常运行循环的一部分   处理时,主线程将消息出列(假设是   在一个常见的运行循环模式中运行)并调用所需的   方法。从同一个线程多次调用此方法会导致   相应的选择器排队并在同一个中执行   拨打电话的顺序。