656_AUTOSAR_EXP_VFB文档阅读13

 

         继续梳理《AUTOSAR_EXP_VFB》,这次梳理的内容也不必包含过多的内容,看一下发送-接收组件的多样性。

656_AUTOSAR_EXP_VFB文档阅读13

这两节中讨论的术语“多重性”适用于特定端口与一个或多个其他端口的连接多重性; 它不考虑分别连接到另一个软件组件的两个不同端口的软件组件的两个不同端口。

两种类型的发送者接收者语义(即具有“lastis-best”语义或排队语义的数据元素的接口),都支持 1:n 通信(1 个发送者和 n 个接收者,n  0)或 n:1 通信( n 个发送者和 1 个接收者)。 发送者拥有数据元素的当前值。 使用 last-is-best 语义,数据的接收者总是希望只有最新的数据值。 通信系统有责任确保接收方数据元素的正确值的可用性。

虽然这里指出了支持一个发送多个接收,但是感觉上这种设计在软件描述上会是比较费劲的,不好确定究竟获得者是哪个接收方。而上面的图给出的两个例子,一个是直接进行数据传递,另一个则是经由了一个通信系统。

656_AUTOSAR_EXP_VFB文档阅读13

从实现的角度来看,这可以例如通过让发送方定期向其接收方广播数据元素的最新值来实现。

第二种实现只能将实际更改传达给接收器。

         通过入队语义和 n:1 通信,队列位于接收端,多个发送方可以将数据元素的值添加到单个接收方的队列中。 为了避免进一步增加 VFB 机制的复杂性,所有其他通信场景(如 n:m (n, m > 1))都是不可能的。

         看到这里,这个描述似乎正好解决了我前面的疑惑。可能对于前面的语句理解,我可能理解的优点偏差。

656_AUTOSAR_EXP_VFB文档阅读13

         对于具有“last-is-best”语义的数据元素的发送方-接收方,1:n 和 n:1 通信(1 个发送方到多个接收方)都是可能的。不过,这个可能是一个疑问点啊!

对于具有入队语义的数据元素的发送方-接收方,1:n(1 个发送方到多个接收方)和 n:1 通信(多个发送方到 1 个接收方)都是可能的。这里又是一个疑问!

对于具有 ModeDeclarationGroups, 只有 1:n (1 发送者到多个接收者) 是可能的。

如果上面的全都解释的清的话,那么只能是在上面的图中所示,得有一个通信系统。这样,接收方不存在于同一个控制器,不存在于同一个软件中,也就可以兼容这样的可能性了。这么看,这种说法很可能是一个系统级别的,而不是一个软件内部的。

656_AUTOSAR_EXP_VFB文档阅读13

由于组件可以具有任意数量的端口,因此单个组件可以承担发送方和/或接收方的角色。

         看起来,出现最后这个补充说明的情况就是我所疑惑的情况。其实,这种情况下,1:n的情况可能是比较难处理的。

         这一小结的理解还是容易的,主要还是在于一个设计模型的认识。掌握这部分的一个关键点,看起来是前面的示意图额外再加上一句话:考虑应该从系统层级考虑,不要局限于一个控制器。

上一篇:Standalone模式下,通过Systemd管理Flink1.11.1的启停及异常退出


下一篇:C/C++函数调用时传参过程与可变参数实现原理