1

我有一个 iOS 类,它在一个单独的线程中进行一些计算,而主线程显示一个允许用户取消计算的警报。计算线程使用几个实例变量,这些变量可以从主线程和计算线程访问。计算线程只读取这些变量,而主线程在计算线程存在时不会写入或读取这些变量。

我的问题是,我需要锁定这些变量吗?

4

3 回答 3

3

只要只有一个线程访问它们,不,您不需要锁定它们。不过尝试一下可能是个好习惯,如果您确实想从主线程访问它们,现在就这样做会很有帮助。

于 2011-11-22T23:28:13.073 回答
2

不,你不。如果变量一次被多个线程写入和读取,您只需要锁定变量。

于 2011-11-22T23:28:27.737 回答
0

同意 Kevin,您应该计划未来的更改,以防您需要访问它们。

仅供参考,我不会使用警报,因为它会阻止主视图。我推荐一个活动指示器视图以及一个允许他们取消的额外按钮。

您可以检查每个常规输入控件(按钮、分段控件等),以确保应用“未处理”以接受输入。

- (IBAction)someOtherButtonPressed:(id)sender {
  if( processingFlag == NO ) {
    // allow handling of input
  }
  else {
    // alert or other message indicating the app is processing
  }
}
于 2011-11-23T00:07:37.747 回答