变量集&得到,比赛条件

时间:2012-02-10 21:36:13

标签: objective-c mutex nsthread race-condition

我在一个线程中设置一个变量,我正在检查它是否用于另一个线程中的条件。

我知道这里的竞争状况。 但不确定以原子方式进行设置是否足够。

请告诉我如何在目标c中解决这个问题。

更新: 还请告诉我如何为全局变量执行此操作。

2 个答案:

答案 0 :(得分:1)

过去50年来,人们提出了许多解决这一广义问题的方法。 :)

将setter语义更改为atomic将无法解决问题 - 这只会阻止在获取和设置变量期间发生更改(请参阅Objective-C Documentation了解它实际执行的操作)。

你想要的是线程之间的信令机制。查看Objective-C Conditions

答案 1 :(得分:0)

如果将其定义为属性,请使用atomic关键字。或者只是省略非原子关键字,因为原子是较慢的默认值。

@property (atomic, retain) NSString *value;

或只是

@property (retain) NSString *value;