набор переменных & Get, условия гонки - PullRequest
0 голосов
/ 11 февраля 2012

Я устанавливаю переменную в потоке и проверяю ее использование для условия в другом потоке.

Я знаю о состоянии гонки здесь. Но не уверен, что этого достаточно, если сделать набор атомарным способом.

Не могли бы вы дать мне знать, как решить эту проблему в объективе-c.

UPDATE: Пожалуйста, дайте мне знать, как это сделать для глобальной переменной.

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

За последние 50 лет было предложено много решений этой обобщенной проблемы. :)

Изменение семантики сеттера на атомарное НЕ решит проблему - это просто предотвращает изменения во время получения и установки вашей переменной (см. Документацию Objective-C , чтобы узнать, что она на самом деле делает) .

То, что вы хотите, это механизм сигнализации между потоками. Проверьте Objective-C Условия .

0 голосов
/ 11 февраля 2012

Если вы определите его как свойство, используйте ключевое слово atomic.Или просто не указывайте ключевое слово nonatomic, поскольку атомарное значение по умолчанию медленнее.

@property (atomic, retain) NSString *value;

или просто

@property (retain) NSString *value;
...