Цитата:
Состояние приложения может быть уже другим, а процесс требует выполнить то, что выполнять уже нельзя. К примеру: Пользователь открыл файловый менеджер, поставил на загрузку файл. Файл улетел на сервер, но пользователь успел закрыть окно. А процесс требует обновления списка файлов после загрузки. Вылазит баг. |
Давай перейдем от абстрактных проблем к реальным ситуациям. Можешь привести пример?
|
Т.е. есть два процесса: файловый менеджер и его дочерний процесс - upload файла. Файловый менеджер умер собственной смертью, а upload файла остался. Вопросы: 1) кто кого убивает, чтобы не было глюков? 2) почему upload файла не может выяснить, жив ли родитель, перед тем как запрашивать обновление списка файлов?
|
Цитата:
Цитата:
Если приложение простое, то там ещё можно выяснять жив родитель или нет, а если сложное, то количество вариантов растет с огромной скоростью. Количество процессов может исчисляться уже десятками и проверять всех родителей или ещё чего там может быть становиться проблематично. |
А дебаг превращается в сущий ад. С процессами чуть больше кода, но зато можно поставить console = true и понять где глюк.
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Ок. Давай другой пример.
У нас есть квадратик. В него мы грузим то список, то табы. Связи между ними никакой нет. Будет грузиться то, что выбрал пользователь. Однако если пользователь будет тыкать слишком усердно мышкой, то порядок следования может перепутаться в лучшем случае. И тут проверять родителей или есть или нет в квадратике чего нельзя. Процессы то асинхронные. |
не, тут лучше такая модель: у каждого ресурса есть список принадлежащих ему ресурсов. при уничтожении родительского ресурса дочерние уничтожаются автоматически.
|
В этом случае получается есть владелец квадратика. По команде от пользователя он запускает в квадратике один из двух других процессов. Если в квадратике уже запущен какой-то процесс, перед тем как запускать другой процесс владелец квадратика должен убить текущий процесс (сообщить ему, что следует сворачивать удочки). Правильно? Но зачем такая терминология? То же самое можно сформулировать в терминах объектов (ресурсов). Необходимо лишь добавить возможность регистрировать создание объектов через какого-то внешнего арбитра (ядро).
Цитата:
|
почему же? очень даже подходит. сначала дочернему ресурсу посылается сообщение самоубиться, а потом по таймауту прибивать насильно.
|
Цитата:
Цитата:
Цитата:
Цитата:
|
и еще вопрос: получается, термин процесс был введен только с целью журналировать действия?
|
Цитата:
Цитата:
|
если нужно чтобы дочерний процесс продолжал работу, то он должен быть перепривязан в другому родителю. например к "менеджеру загрузки файлов".
|
Поэтому я и говорю, что автоматическое убивание - спорное решение. Могу сказать, что в unix/linux системах, никакое автоматическое убивание не происходит, а в случае смерти родителя, процесс переходит во владение процесса init (pid 1).
|
Цитата:
function Tree(id) { core.process({name:'getPath', parent: 'сontent'}); var proc = core.process({name:'tree', parent: 'tree'}); } И да, родитель нужен и еще нужен ребенок или дети. |
это получается потенциальный источник утечек. бездомные ресурсы надо прибивать а не пристраивать их куда-попало)
|
Цитата:
|
не, ну надо же дать им возможность совершить сэппуку по всем правилам ритуала)
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
например так) http://nodejs.org/api/process.html#p..._process_abort
также abort есть у XMLHttpRequest, для таймаутов - clearTimeout и тд.. |
Цитата:
|
Цитата:
|
ничего не понял.
|
function Parent() { new Child(this); } function Child(parent) {} new Parent(); |
x-yuri,
Я может чего недопонимаю, но к чему это ты? Связи между родителями и детьми мне не нужны, я и так их знаю. В этом нет проблемы. Проблема в связях между модулями и непредсказуемостью поведения в зависимости от разных факторов: ответов сервера и действий пользователя. |
Насколько я понимаю, есть процессы и есть модули. Ядро не следит за связями между процессами ("Связи между родителями и детьми мне не нужны, я и так их знаю"). О модулях мы почти не говорили, но наверное ядро следит за зависимостями между модулями, подгружает их в случае необходимости.
|
Цитата:
асинхронные: 1. такой-то 2. такой-то ... синхронные(по сути он тоже асинхронный, но у нас блокирующий действия над изменением системы, то есть синхронный): 1. такой-то За подгрузку модулей отвечает другой объект. Да, можно расширить ядро и добавить таблицу вызовов(сопоставления или как там она называется). А что, идея. Спасибо за мысль. |
Ядро следит за процессами только для отладки/журналирования? Общаться между собой процессы могут и без ядра.
Цитата:
Цитата:
|
Цитата:
... При set tree убить path и title. |
что-то я пропустил.. ты пишешь веб ос? чем оно будет отличаться от существующих?
|
Цитата:
|
Часовой пояс GMT +3, время: 05:42. |