【问题标题】:Context switches on iOS using "performSelectorOnMainThread"使用“performSelectorOnMainThread”在 iOS 上切换上下文
【发布时间】:2012-02-03 11:47:26
【问题描述】:

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

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

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

如果我按照这里的说明做所有事情。 doA`doB 之间可以发生上下文切换吗?

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

【问题讨论】:

    标签: ios multithreading synchronization mutex critical-section


    【解决方案1】:

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

    但是,主线程会在做其他任何事情之前完成所有的 doSomething。

    摘自performSelectorOnMainThread

    该方法在主线程的运行循环中对消息进行排队 使用常见的运行循环模式——即与 NSRunLoopCommonModes 常量。 作为其正常运行循环的一部分 处理时,主线程将消息出列(假设它是 以一种常见的运行循环模式运行)并调用所需的 方法。 从同一线程多次调用此方法会导致 相应的选择器被排队并在同一个相同的地方执行 调用的顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 2011-07-23
      • 1970-01-01
      • 2015-05-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多