неатомарное свойство в классе модели при использовании NSOperationQueue (iPhone)? - PullRequest
0 голосов
/ 05 июня 2010

У меня есть пользовательский класс модели с иваром NSMutableData, к которому будут обращаться пользовательские подклассы NSOperation (используя NSOperationQueue). Я думаю, что могу гарантировать потокобезопасный доступ к ivar из нескольких NSOperations, используя зависимости, и я могу гарантировать, что я не получаю доступ к ivar из другого кода (скажем, моего основного потока приложения), ожидая, пока Q завершит все операции .

Должен ли я использовать неатомарную спецификацию свойств или оставить ее атомарной? Есть ли существенное влияние на производительность?

Ответы [ 3 ]

1 голос
/ 05 июня 2010

Андрей, важно ли это, зависит от того, что ты делаешь.Если ваши операции загружают фильмы на YouTube, и каждая операция должна прочитать данные один раз, тогда это не имеет никакого значения - просто оставьте их как атомарные.

В противном случае вам нужно профилировать, чтобы увидеть, если это важно.Если вы уверены (вы не уверены, что это так), что NSMutableData никогда не будет доступен из двух или более потоков одновременно (как бы вы это ни делали, блокировали, блокировали или просто ожидали), тогда вам это не нужнобыть атомным.

0 голосов
/ 05 июня 2010

Если это изменчивый объект, то вашим главным врагом является параллельная мутация, а не противоречивый доступ к свойству.

0 голосов
/ 05 июня 2010

Преждевременная оптимизация - корень всего зла.

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

...