Безопасно ли читать одновременно с указателя? - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю над загрузчиком изображений и хочу одновременно изменить размер изображения до разных размеров.После того, как я прочитал файл как байт [], я передаю ссылку на этот буфер своим функциям изменения размера, которые выполняются одновременно.

Это безопасно?Я думаю, что передача ссылки на большой файл для чтения с помощью функций изменения размера сэкономит мне память, а параллелизм сэкономит мне время.

Спасибо!

1 Ответ

0 голосов
/ 07 февраля 2019

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

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

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

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