Конечно, есть, как вы думаете, Google Docs реализован?Несколько пользователей могут видоизменить один и тот же документ, но все изменения происходят в режиме реального времени.
Ключевой идеей является накопление дельт (т.е. наборов изменений), а не непосредственное изменение исходного файла.Это подразумевает существование еще одного процесса без окон, ответственного за 1) бесконечное чтение новых дельт из всех активных источников, 2) объединение их в один результирующий набор изменений и, в конечном итоге, 3) обновление общего файла.
A
, B
и C
будут уведомлены ОС.Это легкая часть.Orchestrator
(процесс без окон) может быть уведомлен различными способами, среди которых stdin
или прослушивание определенного порта на localhost
.Тебе решать.
Если вы тщательно спроектируете свои дельты, вы можете получить структуру map/reduce
со всеми ее преимуществами.