Здравствуйте, Sinclair, Вы писали:
S>1. В "традиционной" системе у нас есть блок типа C. Ему не надо вот эти 30 строк трудноотлаживаемой машинерии; вся его логика сводится к
S>Int Output1 { return Input1.GetValue() + Input2.GetValue()}
Да, также вся эта возня с сообщения отъедает не мало процессорного времени. Используете подходящий инструмент.
S>2. Что вы собираетесь делать с блоками, генерирующими бесконечные последовательности? У вас блок а1 собрался оптом запихать сразу всё. Если ему дать это сделать, то он напрочь забьёт очередь блока C, не дав шанса блоку а2.
S>4. Что делать со starvation? Где гарантия, что блок a2 вообще хоть когда-то получит свой квант процессорного времени?
Для этого у нас есть back pressure алгоритм, который балансирует нагрузку (размеры очередей).
S>3. По-прежнему не раскрыт вопрос о том, что делать с двукратным подключением блока a1 к блоку с. Оно вообще поддерживается?
Да, просто два раза выполнить подключение:
a1 ~> c
a1 ~> c ~> printer //Результат: "2", "-2", "2", "-2".
Или три
a1 ~> c
a1 ~> c ~> printer //Результат: "3", "-3", "3", "-3".
a1 ~> c
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)