две темы android и не синхронизированные данные - PullRequest
0 голосов
/ 07 апреля 2010

У меня есть (возможно, глупый) вопрос:

Я использую 2 потока, один пишет float, а другой постоянно читает.мой вопрос, что может случиться хуже, если я не синхронизирую их?не было бы проблем, если бы некоторые значения не были правильными, потому что они переключают лишь немного при каждой операции записи.Я сейчас запускаю приложение таким образом, и у меня нет проблем, поэтому я хочу знать, что может случиться хуже?

конфликт чтения / записи может привести к тому, что число типа 12345, которое записывается в 54321, и красный одновременно, например, отображается как 54345?или могло случиться что-то хуже?(я не хочу использовать синхронизацию, чтобы сохранить код как можно быстрее)

Ответы [ 3 ]

3 голосов
/ 07 апреля 2010

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

0 голосов
/ 07 апреля 2010

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

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

0 голосов
/ 07 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...