OberonCore
https://forum.oberoncore.ru/

Механизм Omnicast, Broadcast и др.
https://forum.oberoncore.ru/viewtopic.php?f=23&t=3336
Страница 1 из 1

Автор:  Александр Ильин [ Пятница, 11 Март, 2011 18:25 ]
Заголовок сообщения:  Механизм Omnicast, Broadcast и др.

Выделено: viewtopic.php?p=61346#p61346

Иван Кузьмицкий писал(а):
Omnicast перебирает все окна, начиная с dir.First() и у каждого секвенсера окна вызывает хэндлер. В этом хэндлере, секвенсер окна (внимание!) опять перебирает все окна, начиная с dir.First и вызывает хэндлер броадкаста у окна - только в том случае, если окно имеет такой же секвенсер.
Зачем два прохода по одному и тому же списку? Из описания не понятно, почему Omnicast не вызывает сразу хэндлер броадкаста.

Автор:  Info21 [ Пятница, 11 Март, 2011 18:55 ]
Заголовок сообщения:  Re: Обход Store'ов из одного Domain'а

Иван Кузьмицкий писал(а):
проявляется сборка мусора как архитектурный фактор, что ли...
Это да, централизованная сборка мусора -- архитектурный фактор.

Только не понятно, что там с секвенсерами -- смысл какой.

Автор:  Иван Кузьмицкий [ Пятница, 11 Март, 2011 19:04 ]
Заголовок сообщения:  Re: Обход Store'ов из одного Domain'а

Александр Ильин писал(а):
Зачем два прохода по одному и тому же списку? Из описания не понятно, почему Omnicast не вызывает сразу хэндлер броадкаста.
Меня смутили вот эти комментарии:
Цитата:
PROCEDURE (s: StdSequencer) Handle (VAR msg: ANYREC);
(* send message to all windows attached to s *)
и
Цитата:
Window* = POINTER TO ABSTRACT RECORD
...
link-: Window; (* ring of windows with same sequencer *)
Судя по ним, между окном и секвенсером отношение многие-к-одному. Стало быть, чтоб не хранить списки окон у секвенсера и не блокировать сборку мусора, нужны дополнительные проходы.

Но чем больше я смотрю на PROCEDURE (h: Hook) Omnicast и PROCEDURE (s: StdSequencer) Handle, тем меньше мне понятно реализованное в них. В каркасе вызов w.BroadcastViewMsg делается только из секвенсера и только вот таким "извращённым" способом. Не понимаю. Может быть, это уже оффтоп.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/