Многопоточность-однопоточность
Михаил & co, приветствую!
Возник такой вопросик. Допустим мне, из архитектурных соображений (возьмем это за данное), хочется, чтобы:
1. все события любой, отдельно взятой стратегии возникали и обрабатывались не более чем одной нитью
2. все разделяемые и модифицируемые данные в рамках стратегии: заявки, инструменты оставались неизменными по ходу работы обработчиков стратегии
(например, хочется быть уверенным, что по ходу работы обработчика NewOrder, объекты-заявки, пришедшие в нем, не изменятся или что не изменится BestBid/Ask).
Самих стратегий м.б. много, несколько десятков.
Мне известен путь "в лоб" для достижения цели №1 - lock в обработчиках на какой-то объект синхронизации, свой для каждой стратегии, но не очень понятно насколько это хорошо с т.зр. производительности при большом числе стратегий.
Как добиться цели №2 от S# я не знаю.
Что-нибудь посоветуете по этим топикам?
Спасибо!
PS. Вопрос не про QUIK, про любые адаптеры S#.