Как синхронизировать задачи в разных очередях отправки?

Я новичок в очередях, и у меня возникли проблемы с настройкой следующей схемы.

У меня их три задачи, которые необходимо выполнить.

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

9
задан Brad Larson 27 July 2011 в 19:07
поделиться