2012-03-21 79 views
0

我已经在我的课私有变量:如何使用BOOL变量同步两个线程?

BOOL isEnabled; 

和方法:

-(void) foo { 

    if(isEnabled) { 
    // do some operations 
    } 
    else { 
    // wait till other thread makes isEnabled = TRUE and do operations 

    } 
} 

我需要以某种方式synchnize的方法。在isEnabled成为真实后,我可以做我的操作。

回答

2

你的问题是相当普遍的,没有一些简单的例子就很难回答。

如果你想同步执行不同的线程,我建议你阅读关于NSOperationNSOperationQueueNSOperationQueue s免费处理同步。

简而言之,NSOperation是在后台执行的操作。每个操作都在队列中执行(NSOperationQueue)。

NSOperationQueue内,您可以指定可以在后台运行的并发操作数。

[yourQueue setMaxConcurrentOperationCount:1]; 

例如,上面的代码中设置了可以被执行来1.对于共享资源的操作,这同一个同步的访问不同的操作中该资源。

此外,您可以设置操作之间的依赖关系。

[operation2 addDependency:operation1]; 

的代码意味着operation1必须operation2光洁度可以运行。

欲了解更多信息,我建议在nsoperation-and-nsoperationqueue以下教程。当然,您也可以在Apple文档上看到课程参考。

希望它有帮助。

+0

真的感谢您的解释 – Buron 2012-03-21 09:00:22