2012-02-10 38 views
0

我在一个线程中设置了一个变量,并且我正在使用它来检查另一个线程中的条件。变量集&获取,竞争条件

我知道这里的比赛条件。但不知道如果以原子方式进行设置就足够了。

你可以请让我知道如何解决这个在objective-c。

更新: 请让我知道如何做一个全局变量。

回答

1

这一广义问题的许多解决方案已经提出,在过去50年。 :)

将setter语义更改为atomic将不能解决问题 - 这只能防止在获取和设置变量期间发生更改(请参阅Objective-C Documentation了解它的实际内容)。

你想要的是线程之间的信号机制。检查出Objective-C Conditions

+0

有人会为这个常见问题编写经过良好测试和无bug的实现 – coder000001 2012-02-10 21:50:48

0

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

@property (atomic, retain) NSString *value; 

或只是

@property (retain) NSString *value; 
+0

这是否足以避免竞争条件? – coder000001 2012-02-10 21:48:08