Потокобезопасная альтернатива глобальных переменных - PullRequest
0 голосов
/ 19 января 2019

Я хочу использовать многопоточную Puma в качестве рабочего сервера, поэтому мой код должен быть поточно-ориентированным. Я прочитал, что использование глобальных переменных не является потокобезопасным. Какая альтернатива глобальным переменным в этом случае? Я использовал глобальные переменные (без изменения значения) в качестве ключей Redis для установки / получения и т. Д.

#initializers/redis.rb

$DRIVER_LOCATIONS = "driver_locations"

и в коде

REDIS.with do |conn|
  conn.geoadd($DRIVER_LOCATIONS, latitude, longitude, id)
end

Или нет необходимости что-то менять?

1 Ответ

0 голосов
/ 21 января 2019

Как указано в комментариях, вам, вероятно, следует использовать константу вместо глобальной переменной

#initializers/redis.rb

DRIVER_LOCATIONS = "driver_locations"

# ...

REDIS.with do |conn|
  conn.geoadd(DRIVER_LOCATIONS, latitude, longitude, id)
end

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

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