Trading algorítmico para .NET y Python✦86+ conectores · exchanges · brókers · cripto✦S#.Designer · backtest · optimizar · en vivo✦Una comunidad de 31,558+ traders y desarrolladores✦Trading algorítmico para .NET y Python✦86+ conectores · exchanges · brókers · cripto✦S#.Designer · backtest · optimizar · en vivo✦Una comunidad de 31,558+ traders y desarrolladores✦
не могли бы уточнить, все ли события QuikTrader работают в одном
дополнительном потоке?
В примере SampleConsole событие Connected ожидает появления
инструментов (NewSecurities)
с помощью ManualResetEvent.
Получается эти два события находятся в разных потоках (иначе бы
выполнение блокировалось).
Прав ли я, что в отдельном одном дополнительном потоке исполняется DDE
сервер и, соответственно,
лишь те события QuikTrader, которые связаны с приходом данных по DDE,
а все остальные обработчики (Connected, Disconnected и т.д.) - это
основной поток?
Реализация меняется от версии к версии. Лучше на это на завязываться.
Главное - что событие могут приходить в других потоках.
Соответственно, работу с общими данные нужно синхронизировать.
Уточню, мой вопрос касается многопоточности именно в неком ядре
StockSharp (сам Trader, его обработчики).
Вопрос не касается стратегий, менеджера стратегий и т.п.
Какова здесь метафора системы? :-)
Пользуем критические секции повсеместно? или же считаем, что все
обработчики, занимающиеся получением данных от торговой системы,
работают по принципу "однопоточный I/O" (что возможно было бы
логично.. пусть следующие "уровни" распараллеливают)?
Насчет событий. Событие отправляющие поочередно. Тоесть, нет такого,
чтобы сначала пришло событие об отмене заявки, а потом об успешной
регистрации. Но пространство для маневра я хочу себе оставить. В
прошлых версиях все вызывалось из пула (а пул - это вещь вообще не
деторминированная). В текущей - все в одном потоке (не основном). В
новой версии - каждое событие в своем... Я пока не пришел к понимаю
единственно правильного. Но что будет всегда и точно - это то, что
данные, к которым идет обращение из обработчиков событий необходимо
синхронизовывать. Секциями или еще как - главное надо.
Utilizamos cookies para garantizar la mejor experiencia en nuestro sitio web. Al continuar utilizando nuestro sitio, usted acepta el uso de cookies.
Comentarios (7)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
События вызываются в другом потоке.
т.е. создается всего один доп.поток и в нем вызываются обработчики?
Михаил,
не могли бы уточнить, все ли события QuikTrader работают в одном дополнительном потоке?
В примере SampleConsole событие Connected ожидает появления инструментов (NewSecurities) с помощью ManualResetEvent.
Получается эти два события находятся в разных потоках (иначе бы выполнение блокировалось).
Прав ли я, что в отдельном одном дополнительном потоке исполняется DDE сервер и, соответственно, лишь те события QuikTrader, которые связаны с приходом данных по DDE, а все остальные обработчики (Connected, Disconnected и т.д.) - это основной поток?
Реализация меняется от версии к версии. Лучше на это на завязываться. Главное - что событие могут приходить в других потоках. Соответственно, работу с общими данные нужно синхронизировать.
Уточню, мой вопрос касается многопоточности именно в неком ядре StockSharp (сам Trader, его обработчики). Вопрос не касается стратегий, менеджера стратегий и т.п.
Какова здесь метафора системы? :-) Пользуем критические секции повсеместно? или же считаем, что все обработчики, занимающиеся получением данных от торговой системы, работают по принципу "однопоточный I/O" (что возможно было бы логично.. пусть следующие "уровни" распараллеливают)?
Возник еще один вопрос. Являются ли методы и свойства QuikTrader thread-safe?
Да, потокобезопасно.
Насчет событий. Событие отправляющие поочередно. Тоесть, нет такого, чтобы сначала пришло событие об отмене заявки, а потом об успешной регистрации. Но пространство для маневра я хочу себе оставить. В прошлых версиях все вызывалось из пула (а пул - это вещь вообще не деторминированная). В текущей - все в одном потоке (не основном). В новой версии - каждое событие в своем... Я пока не пришел к понимаю единственно правильного. Но что будет всегда и точно - это то, что данные, к которым идет обращение из обработчиков событий необходимо синхронизовывать. Секциями или еще как - главное надо.