2012-02-10 71 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