我班上有一个私有变量:
BOOL isEnabled;
和方法:
-(void) foo {
if(isEnabled) {
// do some operations
}
else {
// wait till other thread makes isEnabled = TRUE and do operations
}
}
我需要以某种方式同步这个方法。在isEnabled
成为真后,我可以进行操作。
答案 0 :(得分:2)
你的问题非常笼统,没有一些简单的例子就很难回答。
如果您想同步不同主题的执行,建议您阅读NSOperation
和NSOperationQueue
。 NSOperationQueue
免费处理同步。
简单来说,NSOperation
是在后台执行的操作。每个操作都在队列(NSOperationQueue
)内执行。
在NSOperationQueue
中,您可以指定可以在后台运行的并发操作数。
[yourQueue setMaxConcurrentOperationCount:1];
例如,上面的代码将可以执行的操作设置为1.对于共享资源,同样可以在不同操作之间同步对该资源的访问。
此外,您还可以在操作之间设置依赖关系。
[operation2 addDependency:operation1];
代码表示operation1
必须在operation2
运行之前完成。
有关详细信息,请参阅nsoperation-and-nsoperationqueue上的以下教程。当然,您也可以在Apple doc上看到类引用。
希望它有所帮助。