序列图:线程处理队列中的消息

par*_*ish 2 c++ multithreading uml asynchronous sequence-diagram

从序列图符号可以理解,同步调用异步调用分别具有“实线实头”和“实线细头”。

考虑这种情况:

  1. 一些通知,确实在队列中添加了一条消息(现在这个异步线程在这里死掉了)。
  2. 队列已经有一个处理器线程,它检查队列空状态,并一个接一个地继续处理队列中的消息(该线程正在循环检查queue.empty()) ,处理消息

现在,人们关心的是;

  1. 对于第一点,如何在序列图上将“平台通知”表示为一个事件?[到目前为止,我一直在使用“虚线”和“事件名称”,但从 UML 细节中读取,“虚线”通常用于返回]
  2. 对于第二点,如何显示与第一个线程不同的“处理器线程操作”?。因为,队列中消息处理的顺序并不是按照消息加入队列的顺序触发的(而是异步执行的)。

www*_*.nl 6

  1. 使用带空心箭头的实线。

  2. 将处理器线程显示为单独的生命线。不要将队列视为生命线,因为它只是实现异步消息传递的一种手段。我会这样建模:

异步示例1

如果重要的是要表明处理发生在消息发送之后,您可以在开放箭头和处理之间留出一些垂直空间(空闲时间),如下所示:

带延迟的异步处理

如果您确实想展示排队和轮询机制,可以按如下方式进行,但请注意,现在所有消息都是同步的。

使用同步消息实现异步