Я новичок в очередях, и у меня возникли проблемы с настройкой следующей схемы.
У меня их три задачи, которые необходимо выполнить.
Задача 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? Кроме того, есть ли простой способ убедиться, что они запускаются одинаковое количество раз? (попеременно)