问题描述
当我在静脉5.0中运行示例时,我知道可以通过numInitStages()
函数定义多阶段。但是我不知道BaseModule.cc
文件中的阶段值何时或为什么从0变为1。
void BaseModule::initialize(int stage)
解决方法
模拟环境负责在初始化期间调用后续阶段。
例如,假设为一个模块定义了一个
int numInitStages() const { return 3; }
模拟开始时,模拟环境将调用:
initialize(0);
initialize(1);
initialize(2);
重要的是:模拟环境为每个模块调用initialize(0)
,然后为 every 模块的{{1} }返回2或更多,然后为每个模块的initialize(1)
返回3或更多的调用numInitStages()
。
因此,我们确保在调用后initialize(2)
被称为
{em> all 模块中的numInitStages()
。因此,例如,我们可能决定在stage = 1中分配一个地址,并在stage = 2中打开使用该地址的套接字。