如何使用BOOL变量同步两个线程?

时间:2012-03-21 08:13:23

标签: objective-c ios multithreading synchronization

我班上有一个私有变量:

BOOL isEnabled;

和方法:

-(void) foo {

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

   }
}

我需要以某种方式同步这个方法。在isEnabled成为真后,我可以进行操作。

1 个答案:

答案 0 :(得分:2)

你的问题非常笼统,没有一些简单的例子就很难回答。

如果您想同步不同主题的执行,建议您阅读NSOperationNSOperationQueueNSOperationQueue免费处理同步。

简单来说,NSOperation是在后台执行的操作。每个操作都在队列(NSOperationQueue)内执行。

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

[yourQueue setMaxConcurrentOperationCount:1];

例如,上面的代码将可以执行的操作设置为1.对于共享资源,同样可以在不同操作之间同步对该资源的访问。

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

[operation2 addDependency:operation1];

代码表示operation1 必须operation2运行之前完成。

有关详细信息,请参阅nsoperation-and-nsoperationqueue上的以下教程。当然,您也可以在Apple doc上看到类引用。

希望它有所帮助。