我在一个线程中设置了一个变量,并且我正在使用它来检查另一个线程中的条件。变量集&获取,竞争条件
我知道这里的比赛条件。但不知道如果以原子方式进行设置就足够了。
你可以请让我知道如何解决这个在objective-c。
更新: 请让我知道如何做一个全局变量。
我在一个线程中设置了一个变量,并且我正在使用它来检查另一个线程中的条件。变量集&获取,竞争条件
我知道这里的比赛条件。但不知道如果以原子方式进行设置就足够了。
你可以请让我知道如何解决这个在objective-c。
更新: 请让我知道如何做一个全局变量。
这一广义问题的许多解决方案已经提出,在过去50年。 :)
将setter语义更改为atomic将不能解决问题 - 这只能防止在获取和设置变量期间发生更改(请参阅Objective-C Documentation了解它的实际内容)。
你想要的是线程之间的信号机制。检查出Objective-C Conditions。
如果将其定义为属性,请使用atomic关键字。或者只是省略nonatomic关键字,因为atomic是较慢的默认值。
@property (atomic, retain) NSString *value;
或只是
@property (retain) NSString *value;
这是否足以避免竞争条件? – coder000001 2012-02-10 21:48:08
有人会为这个常见问题编写经过良好测试和无bug的实现 – coder000001 2012-02-10 21:50:48