我有一个iOS类,它在一个单独的线程中执行一些计算,而主线程显示一个允许用户取消计算的警报。计算线程使用几个实例变量,可以从主线程和计算线程访问这些变量。计算线程仅读取这些变量,并且在计算线程存在时,主线程不会写入或读取这些变量。
我的问题是,我需要锁定这些变量吗?
发布于 2011-11-23 07:28:13
只要只有一个线程访问它们,就不需要锁定它们。尝试一下可能是一个很好的做法,如果你想从主线程访问它们,现在就做会很有好处。
发布于 2011-11-23 07:28:28
不,你不能。只有当变量同时被多个线程写入和读取时,才需要锁定这些变量。
发布于 2011-11-23 08:07:38
同意Kevin的观点,您应该为将来的更改做好计划,以防需要访问它们。
仅供参考,我不会使用警告,因为它会阻塞主视图。我推荐一个活动指示器视图,以及一个允许他们取消的额外按钮。
您可以在每个常规输入控件(按钮、分段控件等)中进行检查,以确保应用程序“未处理”以便接受输入。
- (IBAction)someOtherButtonPressed:(id)sender {
if( processingFlag == NO ) {
// allow handling of input
}
else {
// alert or other message indicating the app is processing
}
}https://stackoverflow.com/questions/8235359
复制相似问题