- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 omnet++ 中构建自己的复合模块,其中包含多个简单模块并具有分层架构。但是在模块间通信中仅使用 send()
(就像我的 App 生成器使用 send() 将数据包发送到下方缓冲区)似乎增加了总网络延迟。
此外,我还看到其他得到很好支持的模型,如 inet、mixim 等。交替使用 sendDirect 和 send 和 sendDelayed。
所以,我的问题是,何时使用 send()
、sendDirect()
和 sendDelayed()
?它们有任何延迟差异吗?
最佳答案
有几种方法可以在模块之间交换信息。您使用哪一个实际上取决于您传递的数据以及该交换与协议(protocol)本身相关的程度。
首先澄清一下:使用send()
或 sendDirect()
NOT 不会增加延迟。如果您通过正常 channel 发送消息或使用 sendDirect()
该消息将在当前模拟时间(即现在)传递到目标模块。当消息在目的地被处理时,仿真叉将是相同的,因此仿真时间没有额外的延迟。 sendDelayed()
显然会增加延迟,但这无论如何是它的主要目的。
您必须决定是要使用消息传递作为模块之间的通信方式(这是异步的)还是要直接调用另一个模块(这是同步的)。在第一种情况下,您可以使用 OMNeT++ 的调度函数(即 send
、sendDelayed
、sendDirect
等)。在第二种情况下,您通常通过获取指向它的指针并可能使用 check_and_cast<>
将其转换为适当的类型来直接调用另一个模块。 .类似 getParentModule()
的方法和 findSubmodule()
在这里可用于获取指向所需模块的指针。
当模块之间的通信被视为“实现”细节时,直接调用很有用。它也更快(就 CPU 使用率而言)和同步(因此您可以获得返回值)。
如果您在使用 GUI 运行时环境的模拟过程中传递要检查的数据(即,您想看到飞来飞去的小点),那么您应该使用消息定义和 send()
/sendDirect()
等等
最后,send()
之间的区别和 sendDirect()
.如果你有一个通过 channel 连接门的拓扑(即你现在提前通信路径)你通常使用 send()
(例如有线网络)。如果您事先不知道通信路径,那么您通常会获得指向目标模块的指针,但之后您会使用 sendDirect()
发送异步消息。 .这通常是无线网络中的情况。
关于omnet++ - 什么时候在 OMNet++ 中使用 send、sendDirect 和 sendDelayed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36080576/
我正在创建自己的有线仿真模型,其中节点具有分层架构。 应用层周期性的生成数据包,然后使用 scheduleAt(simTime() + 0.00000000625,AppModuleSelfTrigg
我是 omnet++ 的新手,我需要安装 Veins。我正在按照网站上的教程进行操作,但遇到了一些麻烦。 我在 Windows 8.1 上运行 omnet 5.1.1 和 veins 4.6,当我构建
我已经按照教程步骤使用 sumo 0.29 和 Omnet++ 5.1 安装了适用于 Windows 的 Veins 4.5,一切都很好,直到我不得不在 Omnet++ 中构建 Veins。我遇到的唯
大家好 我有两个关于 OMNET++ 输出结果的问题 1- 我有一个在 VANET 网络中使用 AODV 路由协议(protocol)的模拟,但是当我为这个模拟记录 pcap 时,它显示为损坏或损坏,
我是 VEINS 的新手。我可以在 Veins 中运行相扑模拟,但不知道如何在汽车之间进行通信或传递消息。有人可以帮忙吗? 最佳答案 Veins 教程中使用的演示场景正是这样做的。您可以在 the V
NED 文件: import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator; import inet.physicallaye
我已经安装了 veins 4.7,并且完成了教程。一切正常。现在我构建了一个更像 DemoBaseApplLayer 的新模块。该模块继承自 BaseAppLayer。在初始化方法中,我调用了一个 d
要启动任何静脉模拟,使用 veins_launchd 守护进程。它基本上获取 sumo 配置文件,找到一个未使用的端口,启动 sumo 并桥接 sumo 和 OMNet++ 之间的连接。现在这是一个基
我和我的 friend 要开始一个项目。我们将模拟服务器和客户端之间的基本通信。我们有一个要实现的伪代码。使用这种通信,我们将尝试以不同的方式检测通信中的故障。我们都是这两种软件的新手,所以想就我们应
我正在使用 veins、sumo 和 omnetpp 进行交通模拟。该 ide 运行良好了数周,然后突然无法初始化模拟并卡在(我的控制台窗口) Starting... $ cd /home/gopal
我是 OMNet++ 的新手,我正在尝试探索 INeT 框架中可用的示例和功能。那么我如何基于这个框架创建一个新项目呢?以及如何从不同的项目导入某些模块。 谢谢 最佳答案 只需创建一个新项目,右键单击
我想设置warmup-period作为我在模拟中需要的一些参数的总和。我写了这个,但我总是得到一个语法错误或解析错误 **.airspace.interArrivalTime = ${iat = 15
我是 omnet++ 的新手,发现了一些困难。我的代码没问题,但问题是 g++ 和 gcc 未在 PATH 中找到。我不知道为什么会出现这个问题。提前致谢。 最佳答案 从主 OMNeT++ 目录启动
我用相扑来模拟高速公路场景和车辆移动,如何得到网络报文的模拟,以及如何获得“报文投递率”等性能指标?需要测量相关的性能指标,以及如何从代码中获取它们如何获得网络报文模拟,以及如何获得报文投递率等性能指
我正在 omnet++ 中构建自己的复合模块,其中包含多个简单模块并具有分层架构。但是在模块间通信中仅使用 send()(就像我的 App 生成器使用 send() 将数据包发送到下方缓冲区)似乎增加
我正在做一个使用 802.11p 改善公共(public)汽车运输时间的项目。目前,我制作并模拟了一个 SUMO 模型,我正在继续使用 Omnet++ 和 Veins 对网络进行建模。我已经完成了 T
我正在学习 R 并学习了这个名为 RInside 的软件包它提供了 c++ 类来调用嵌入式 R 解释器。根据 this blogpost 配置后,我能够运行一些给出的示例并在 Omnet++ ecli
如何将消息从一个RSU发送到另一个RSU?在默认示例中,我使用的是5.2版的静脉,我只是多添加了一个RSU(一个非常接近另一个)。我可以使用sendDown()或sendDelayedDown()方法
我正在尝试为 MANET 网络创建简单的无线节点,它可以将消息发送到范围内的其他节点。在 INET 中实现的解决方案还包含我不需要的其他层,如 IP、传输、应用程序。 我是 omnet++ 的新手,所
我是 omnetpp 的初学者。 我必须使用 inet 在 omnet 中创建一个车辆,然后通过 veins 将其连接到 sumo 我该如何开始我的项目。 最佳答案 Veins 4.7.1 附带一个名
我是一名优秀的程序员,十分优秀!