Цитата:
Состояние приложения может быть уже другим, а процесс требует выполнить то, что выполнять уже нельзя. К примеру: Пользователь открыл файловый менеджер, поставил на загрузку файл. Файл улетел на сервер, но пользователь успел закрыть окно. А процесс требует обновления списка файлов после загрузки. Вылазит баг. |
Давай перейдем от абстрактных проблем к реальным ситуациям. Можешь привести пример?
|
Т.е. есть два процесса: файловый менеджер и его дочерний процесс - upload файла. Файловый менеджер умер собственной смертью, а upload файла остался. Вопросы: 1) кто кого убивает, чтобы не было глюков? 2) почему upload файла не может выяснить, жив ли родитель, перед тем как запрашивать обновление списка файлов?
|
Цитата:
Цитата:
Если приложение простое, то там ещё можно выяснять жив родитель или нет, а если сложное, то количество вариантов растет с огромной скоростью. Количество процессов может исчисляться уже десятками и проверять всех родителей или ещё чего там может быть становиться проблематично. |
А дебаг превращается в сущий ад. С процессами чуть больше кода, но зато можно поставить console = true и понять где глюк.
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Ок. Давай другой пример.
У нас есть квадратик. В него мы грузим то список, то табы. Связи между ними никакой нет. Будет грузиться то, что выбрал пользователь. Однако если пользователь будет тыкать слишком усердно мышкой, то порядок следования может перепутаться в лучшем случае. И тут проверять родителей или есть или нет в квадратике чего нельзя. Процессы то асинхронные. |
не, тут лучше такая модель: у каждого ресурса есть список принадлежащих ему ресурсов. при уничтожении родительского ресурса дочерние уничтожаются автоматически.
|
В этом случае получается есть владелец квадратика. По команде от пользователя он запускает в квадратике один из двух других процессов. Если в квадратике уже запущен какой-то процесс, перед тем как запускать другой процесс владелец квадратика должен убить текущий процесс (сообщить ему, что следует сворачивать удочки). Правильно? Но зачем такая терминология? То же самое можно сформулировать в терминах объектов (ресурсов). Необходимо лишь добавить возможность регистрировать создание объектов через какого-то внешнего арбитра (ядро).
Цитата:
|
Часовой пояс GMT +3, время: 13:17. |