为什么 sendDelayed() 会增加发送 2 的幂的时间?

Why does sendDelayed() increase time of sending in powers of 2?

我真的是 Omnet++ 的新手,我不明白这些值是什么。为什么仿真时间以 2 的幂增加?

这是消息处理程序的代码:

 void box::initialize() {
    if(strcmp("box", getName()) == 0) {
        packet1 *m = new packet1;
        m->setName("message");
        send(m, "out");
    }
}

void box::handleMessage(cMessage *msg) {
    if(strcmp(msg->getName(), "message") == 0) {
        sendDelayed(msg,SIMTIME_DBL(simTime())+1,"out");
    }
}

模拟时间值不应该是0然后1然后2吗?

注意,根据OMNeT++ Simulation Library API sendDelayed() 的第二个参数是延迟,而不是发送的绝对时间。此外,simTime() returns 当前模拟时间。因此,您的代码按如下方式安排消息:
在 t = 0s - 在 t + 0 + 1 = 0 + 0 + 1 = 1s 的时间表
在 t = 1s - t + t + 1 = 1 + 1 + 1 = 3s 的时间表
在 t = 3s - t + t + 1 = 3 + 3 + 1 = 7s 的时间表
在 t = 7s - t + t + 1 = 7 + 7 + 1 = 15s 的时间表
....
其中 t 是模拟时间。

为了应用一秒延迟,应该写:

sendDelayed(msg, 1.0, "out");