我在一個線程中設置了一個變量,並且我正在使用它來檢查另一個線程中的條件。變量集&獲取,競爭條件
我知道這裏的比賽條件。但不知道如果以原子方式進行設置就足夠了。
你可以請讓我知道如何解決這個在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