我有一个 iOS 类,它在一个单独的线程中进行一些计算,而主线程显示一个允许用户取消计算的警报。计算线程使用几个实例变量,这些变量可以从主线程和计算线程访问。计算线程只读取这些变量,而主线程在计算线程存在时不会写入或读取这些变量。
我的问题是,我需要锁定这些变量吗?
我有一个 iOS 类,它在一个单独的线程中进行一些计算,而主线程显示一个允许用户取消计算的警报。计算线程使用几个实例变量,这些变量可以从主线程和计算线程访问。计算线程只读取这些变量,而主线程在计算线程存在时不会写入或读取这些变量。
我的问题是,我需要锁定这些变量吗?
只要只有一个线程访问它们,不,您不需要锁定它们。不过尝试一下可能是个好习惯,如果您确实想从主线程访问它们,现在就这样做会很有帮助。
不,你不。如果变量一次被多个线程写入和读取,您只需要锁定变量。
同意 Kevin,您应该计划未来的更改,以防您需要访问它们。
仅供参考,我不会使用警报,因为它会阻止主视图。我推荐一个活动指示器视图以及一个允许他们取消的额外按钮。
您可以检查每个常规输入控件(按钮、分段控件等),以确保应用“未处理”以接受输入。
- (IBAction)someOtherButtonPressed:(id)sender {
if( processingFlag == NO ) {
// allow handling of input
}
else {
// alert or other message indicating the app is processing
}
}