Ну что ж... после эксперементов появилась очредная технология - SmartTankExStream:))
Я рассуждал на тему реализации концепции исполнения скриптов на контроллере. Мне крайне не хотелось делать основной цикл в скриптах. Т.е. чтобы они постоянно занимали память. Опыт создания высоконагруженных систем диктует использование очередей и событийную модель. Да собственно java на том же принципе построена.
Поэтому... я решил отказаться сразу же от основного цикла в скрипте. Оставить только событийную модель и внедрить очереди.
Эта схема очень просто решает вопросы возникновения неких событий, таких как например фронты на входе контроллера, таймеры, внутренние события.
Но оставался вопрос с обработкой больших данных. Например годового цикла.
После нескольких дней раздумий и эксперементов родилась идея:
1. Выделить понятие потока. Т.е. постоянно поступающие данные на вход.
2. Выделить понятие адаптера для потока. Это скрипт, который запускается в тот момент когда в поток поступают данные. Именно он получая их, интерпритируя, формирует итоговое событие, которое обрабатывает скрипт.
3. Файл можно сконфигурировать как поток. В манифесте определяется его адаптер и далее начинается магия
1. При сохранении графика, по правилам указанным в манифесте на этот график натравливается адаптер. Т.е. вызывается событие поступление данных в поток.
2. Он начинает обработку. Например очередной точки из файла. Генерирует событие nextpoint с параметрами, которые передалутся всем слушателям. По завершению своей работы он сообщает условия своей очередной активации. Наример через 10 сек, т.е. тогда, когда наступает время очередной точки.
3. Слушатели получают событие адаптера и обрабатывают его как считают нужным. Напомню что это событие получают как скрипты в самом контроллере, так и шина.
Таким образом, очень просто реализуется механизм очередей, а также конкуренция задач. Система остается полностью асинхронной.
Мне не важно ваше мнение. Мне важны ваши дела.