从序列图符号可以看出,同步调用和异步调用具有“带实心头的实线”和分别为“细头实线”。
考虑这种情况;
- 一些通知,确实在队列中添加了一条消息(现在这个异步线程在这里结束)。
- 队列已经有一个处理器线程,它检查队列空状态,并继续处理队列中的消息,一个接一个(这个线程正在循环queue.empty() 检查,处理消息)
现在,问题是;
- 对于第一点,如何在序列图中表示“平台通知”,就像事件一样? [到目前为止,我一直在使用带有“事件名称”的“虚线” , 但正如从 UML 细节中读到的那样,“虚线”通常用于返回]
- 对于第二点,如何展示与第一个线程不同的“处理器线程操作”?。因为,队列中的消息处理顺序不会按照消息添加到队列的顺序触发(但该顺序是异步遵循的)。
最佳答案
使用带有空心箭头的实线。
将处理器线程显示为单独的生命线。不要将队列显示为生命线,因为它只是实现异步消息传递的一种手段。我会这样建模:
如果表明处理发生在消息发送之后发生很重要,您可以在空心箭头和处理之间留出一些垂直空间(空闲时间),如下所示:
如果你真的想显示队列和轮询机制,你可以按如下方式进行,但注意现在所有消息都是同步的。
关于c++ - 时序图 : Thread processing over messages in queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567400/