обмен синглтоном между задачами в ruby ​​thor CLI - PullRequest
0 голосов
/ 01 июня 2018

Я реализую приложение командной строки ruby ​​(интерактивное приложение), и я использую THR для CLI.У меня будет три задачи, и одна из задач - загрузка внешних файлов и их сохранение.Другие задачи включают манипулирование содержимым файла, который был сохранен.Я не хочу загружать файл каждый раз при запуске задачи, это должно быть один раз.Я планирую создать одноэлементный класс, который позаботится о загрузке и хранении файлов.Но я предполагаю, что каждая из этих задач будет выполняться в отдельных процессах и не сможет совместно использовать созданный экземпляр.Как мне перейти к дизайну для этого сценария?

1 Ответ

0 голосов
/ 01 июня 2018

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

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

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

...