【问题标题】:How to find the state of threads in iOS?如何在 iOS 中找到线程的状态?
【发布时间】:2012-11-24 04:05:37
【问题描述】:

我已经实现了一些线程函数(我使用了NSInvocaionOperation),它们在不干扰 UI 响应的情况下执行一些后台进程。一切正常,我在操作队列中添加的所有选择器都被调用了。 (我通过将 NSLog 放在所有选择器方法中来这么说)。

我想知道更多细节来检查/检查每个线程的状态。

也就是说,

  • 我可以测量选择器完成所用的时间吗?
  • 我可以知道特定线程的当前状态吗?

如果您添加更多关于线程优化的点,将会非常有帮助。

提前致谢。

【问题讨论】:

标签: ios multithreading time state performance


【解决方案1】:

您可以通过调用以下方法来获取线程执行状态, – 正在执行 – 已完成 – isCancelled 返回 bool。

also have a look at this

【讨论】:

    【解决方案2】:

    目前在 iOS 上进行线程优化的最佳方法是忘记显式线程管理,而改用 Grand Central Dispatch。这并不适用于所有情况,但如果你只是在编写时在后台调用一些选择器,显式线程显然是矫枉过正的。

    这是使用 GCD 将选择器旋转到背景的方式:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [self doSomeLongerTask]; // runs in a background thread
        dispatch_async(dispatch_get_main_queue(), ^{
            [self reportOperationDone]; // runs on the UI thread
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2019-01-11
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多