Недавно пришлось столкнуться с написанием алгоритма в условиях асинхронности появления входных данных.
Задача заключалось в написании на C# простенького торгового робота, входные данные — биржевые тики, изменения статусов заявок и т.п. —
поступали в мои подписчики на соответствующие события библиотеки, поставляющей данные.
Честно говоря, оказалось чертовски сложно перекладывать простейшую логику алгоритма на подобную асинхронность.
Некоторые с виду атомарные шаги алгоритма растягивались на появление нескольких событий.
Пришлось городить нечто вроде огромного конечного автомата.
Кстати еще было нужно мочь сериализовывать текущее состояние обработки и потом его восстанавливать.
Не поделитесь способами моделирования и технологиями реализации подобных задач?
У меня были мысли про цепочки коллбеков, вспомнился Twisted Framework..
Но реализовывать нечто подобное на базе C# event'ов и делегатов я пока не решился.