Диаграмма последовательности: обработка потоков в сообщениях в очереди

Как понятно из символов Sequence-Diagram, синхронизации вызовов а также асинхронные звонки иметь «сплошная линия с твердой головой» а также «сплошная линия с тонкой головкойсоответственно.

Рассмотрим случай, как;

  1. Некоторое Уведомление, добавляет ли сообщение в очередь (теперь этот асинхронный поток умирает здесь).
  2. Уже есть обработчик потока для очереди, который проверяет состояние очереди пусто и переходит к обработке сообщений в очереди, одно за другим (этот поток зацикливается на проверке queue.empty () для обработки сообщений)

Теперь проблема в том,

  1. Для 1-го пункта Как представить «уведомление платформы» на диаграмме последовательности, как его событие? [До сих пор я использовал «пунктирную линию» с «именем события», но, как видно из специфики UML, «пунктирные линии» обычно используются для возвратов]
  2. Для 2-го пункта как показать случай, когда «операция с процессором» отличается от первой?. Так как последовательность обработки сообщения из очереди не запускается в последовательности сообщения, добавляемого в очередь (но последовательность выполняется асинхронно).

1

Решение

  1. Используйте сплошную линию с открытой стрелкой.

  2. Показать поток процессора как отдельную линию жизни. Не показывайте очередь как спасательный круг, так как это всего лишь средство для реализации асинхронного обмена сообщениями. Я бы смоделировал это так:

async example1

Если важно показать, что обработка происходит позже, чем в момент отправки сообщения, вы можете оставить некоторое вертикальное пространство (время простоя) между открытой стрелкой и обработкой, как показано ниже:

асинхронная обработка с задержкой

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

Асинхронизация реализована с использованием сообщений синхронизации

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]