知识卡片
同步消息与异步消息的语义区别
内容
同步消息要求调用者原地等待直到消息处理完成,等同于调用子程序;异步消息发出后调用者可立即做其他事,不必等待响应,常见于多线程和消息中间件,带来更好响应性、减少瞬时耦合,代价是更难调试。UML 2用实心箭头表示同步、条形箭头表示异步,但差异过于细微,且与UML 1.4之前用半箭箭头表示异步的老习惯不兼容。作者建议:默认假设箭头是同步的,除非确认作者刻意区分;要强调异步宁可用已废弃但更醒目的半箭箭头。
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第4章《序列图》(源文件:_epub-src/EPUB/3.xhtml)
- 结论依据:原文定义"如果调用者要发送同步消息,它必须等待,直到消息完成……如果调用者要发送异步消息,它可以继续进行其他处理,不必等待响应",并指出"箭头的区分太过细微……如果你要强调异步消息,我推荐使用已废弃的半箭箭头"。
- 原始内容:如果调用者要发送同步消息(synchronous message),它必须等待,直到消息完成,就像调用一个子程序。如果调用者要发送异步消息(asynchronous message),它可以继续进行其他处理,不必等待响应……我认为箭头的区分太过细微。如果你要强调异步消息,我推荐使用已废弃的半箭箭头。