Один поток изменяет BOOL на ДА, другой поток не видит изменений - PullRequest
2 голосов
/ 20 сентября 2010

У меня есть свойство, объявленное следующим образом:

@property(assign) BOOL die;

Один поток постоянно проверяет, должен ли он умереть, проверяя, не изменилась ли эта переменная на YES.Когда для этого кристалла задано значение YES (пользователь нажимает кнопку), другой обрабатываемый поток все равно видит его как NO.Я тщательно проследил код и увидел, что переменная определенно не отображается как измененная.Что здесь происходит?

Содержит ли каждый поток свой кеш переменной?В Java, моем родном языке, я бы установил ключевое слово 'volatile', чтобы удалить кеширование локальных потоков в свойстве.

Это то, что вы можете сделать в obj-c, или я не на том пути?

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

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

0 голосов
/ 28 сентября 2010

Возможно, вам лучше использовать центры уведомлений, чтобы слушатель получал уведомления об изменении.

...