В варианте где менеджер следит за выставленными флагами есть одно но… если менеджер опрашивает флаги сам то придется делать это циклично, а это опять таки явная задержка
это мы сейчас вываливаемся в тему синхронизации данных, где и надо решить задачу узкого горлышка. В любых асинхронных задачах, вопрос синхронизации является узким горлышком.
что я понял из ваших комментов: куча разного кода в разных модулях имееет асинхронный доступ к пулу, который управляет заявками.
Я бы начал тестить модель «много писателей, один читатель». В данном случае, куча стратегий будет писать в одну и туже 32-х/64-х битную переменную, каждая в свой бит. (первая страта в 0 бит, вторая страта в 1 бит, третья страта в 2 бит и тд..)… тогда пулу не надо опрашивать каждую страту, ему только надо атомарно зачитать эту переменную и сравнить ее с конкретным значением (например если у вас 16 страт, то нужно сделать сравнение strategy_flags == 0xFF)
получается, когда вы получили новый котир/новый тик/новую свечу текущего таймфрема, ваши страты сделали расчет, а пул в этот момент следит за битными флагами.
это конечно если все позволит язык. Если вдруг это на qlua, даже не знаю, как это там все решать