← Zurück

многопоточность

Скажите, а начиная с какого места Stock# является многопоточным?

Создает ли новые потоки сам QuickTrade, если пользоваться лишь его событиями типа NewTrade и т.п. и не использовать встроенные стратегии?

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

События вызываются в другом потоке.

sergun
sergun Autor

т.е. создается всего один доп.поток и в нем вызываются обработчики?

sergun
sergun Autor

Михаил,

не могли бы уточнить, все ли события QuikTrader работают в одном дополнительном потоке?

В примере SampleConsole событие Connected ожидает появления инструментов (NewSecurities) с помощью ManualResetEvent.

Получается эти два события находятся в разных потоках (иначе бы выполнение блокировалось).

Прав ли я, что в отдельном одном дополнительном потоке исполняется DDE сервер и, соответственно, лишь те события QuikTrader, которые связаны с приходом данных по DDE, а все остальные обработчики (Connected, Disconnected и т.д.) - это основной поток?

Mikhail Sukhov
Mikhail Sukhov

Реализация меняется от версии к версии. Лучше на это на завязываться. Главное - что событие могут приходить в других потоках. Соответственно, работу с общими данные нужно синхронизировать.

sergun
sergun Autor

Уточню, мой вопрос касается многопоточности именно в неком ядре StockSharp (сам Trader, его обработчики). Вопрос не касается стратегий, менеджера стратегий и т.п.

Какова здесь метафора системы? :-) Пользуем критические секции повсеместно? или же считаем, что все обработчики, занимающиеся получением данных от торговой системы, работают по принципу "однопоточный I/O" (что возможно было бы логично.. пусть следующие "уровни" распараллеливают)?

sergun
sergun Autor

Возник еще один вопрос. Являются ли методы и свойства QuikTrader thread-safe?

Mikhail Sukhov
Mikhail Sukhov

Да, потокобезопасно.

Насчет событий. Событие отправляющие поочередно. Тоесть, нет такого, чтобы сначала пришло событие об отмене заявки, а потом об успешной регистрации. Но пространство для маневра я хочу себе оставить. В прошлых версиях все вызывалось из пула (а пул - это вещь вообще не деторминированная). В текущей - все в одном потоке (не основном). В новой версии - каждое событие в своем... Я пока не пришел к понимаю единственно правильного. Но что будет всегда и точно - это то, что данные, к которым идет обращение из обработчиков событий необходимо синхронизовывать. Секциями или еще как - главное надо.