Таймер / объединение потоков

У меня есть небольшой проект, который должен отслеживать движение цены акций в течение заданных интервалов времени. Например. Он должен иметь возможность отслеживать% движения цены AAPL в течение последних 30 секунд, 1 минуты, 3 минуты, 5 минут, 10 минут. Все акции имеют одинаковые временные интервалы. Программа будет написана на C ++ и будет работать в Linux, хотя это не должно иметь значения.

Ниже описан подход, о котором я думаю,

1) Получите данные фондового рынка из многоадресной рассылки, около 4000 символов

2) Обработать канал и сохранить его в глобальном кэше кавычек

3) Spawn N количество потоков, по одному на каждый интервал

4) Каждый поток будет поддерживать свою собственную копию символов, при запуске инициализировать каждый символ с текущей ценой из глобального кэша, а затем перейти в спящий режим на указанный интервал

5) При пробуждении привязать текущую цену (из кэша котировок, которая будет иметь самое последнее значение из ленты котировок), вычислить разницу, отправить эту информацию в очередь

6) Иметь специальную ветку для чтения очереди и публикации цен на кеширующем сервере.

7) Интерфейсные приложения с интерфейсом переднего плана читают с сервера кэширования и отображают процентное движение

Этот подход должен работать, но есть ли лучший способ сделать это? Также одной областью оптимизации может быть объединение части привязки цены потока (после пробуждения потока), где, если два или более потока будут привязываться одновременно, например, 30-секундные, 1-минутные и 2-минутные потоки будут соединяться вместе каждые две минуты, поэтому объедините их в одну привязку. Какую логику я могу использовать для объединения? Спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]