Я новичок в очередях и у меня возникли некоторые проблемы при настройке следующей схемы.
У меня есть три задачи, которые нужно выполнить.
Задача A: Может выполняться только наглавная очередь, может выполняться асинхронно с задачей B, не может асинхронно работать с задачей C. Работает много, но выполняется довольно быстро.
Задача B: Может работать в любой очереди, может выполняться асинхронно с задачей A, не может работать асинхроннос заданием C. Работает редко, но занимает много времени.После этого требуется выполнение задачи C, но снова задача C не может работать асинхронно с задачей A.
Задача C: может выполняться в любой очереди.Невозможно выполнить асинхронно ни с задачей A, ни с задачей B. Работает редко и выполняется быстро.
Прямо сейчас у меня так:
Задача A отправляется в основную очередь с помощью последовательной очереди X(задача отправляется в последовательную очередь X для отправки задачи A в основную очередь).
Задача B отправляется в последовательную очередь X.
Задача C отправляется в основную очередь с помощью последовательного интерфейсаОчередь X, точно так же, как задача A.
Проблема здесь в том, что задача C иногда запускается одновременно с задачей B. Основная очередь иногда запускает задачу C в то же время, что последовательная очередь выполняет задачу B.
Итак, как я могу гарантировать, что задача B и задача C никогда не будут выполняться одновременно, при этом позволяя A и B запускаться одновременно и предотвращая одновременное выполнение A и C?Кроме того, есть ли простой способ убедиться, что они запускаются одинаковое количество раз?(чередование вперед и назад)