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