我在一个线程中设置一个变量,我正在检查它是否用于另一个线程中的条件。
我知道这里的竞争状况。 但不确定以原子方式进行设置是否足够。
请告诉我如何在目标c中解决这个问题。
更新: 还请告诉我如何为全局变量执行此操作。
答案 0 :(得分:1)
过去50年来,人们提出了许多解决这一广义问题的方法。 :)
将setter语义更改为atomic将无法解决问题 - 这只会阻止在获取和设置变量期间发生更改(请参阅Objective-C Documentation了解它实际执行的操作)。
你想要的是线程之间的信令机制。查看Objective-C Conditions。
答案 1 :(得分:0)
如果将其定义为属性,请使用atomic关键字。或者只是省略非原子关键字,因为原子是较慢的默认值。
@property (atomic, retain) NSString *value;
或只是
@property (retain) NSString *value;