以下は、C++ と .ned ファイルのコードです。tic、tac、toc の 3 つのモジュールがあります。メッセージが各モジュールを 1 回だけ通過するようにしたいのですが、いくつかのイベントの後、プログラムが応答しなくなりますか? 具体的には、数回繰り返した後、メッセージが toc に到達したときです。他に回避策があれば教えてください。新参者ですみません。
void Txc1::handleMessage(cMessage *msg)
{
counter++;
int n= gateSize("out");
int k = intuniform(0,gateSize("out")-1);
cGate *arrivalGate = msg->getArrivalGate();
cGate *depGate = msg ->getSenderGate();
if(arrivalGate != NULL)
{
int gate = arrivalGate->getIndex();
int gate_out = depGate ->getIndex();
EV<<"Arrival Gate: "<<gate<<endl;
EV<<"Departure Gate: "<<gate_out<<endl;
if(n >= 2)
{
while(gate==k){
k = gate_out;
}
}
}
else
EV << "Forwarding message " << msg << " on port out[" << k << "]\n";
send(msg, "out", k);
}
-----.NED-------
simple Txc1
{
gates:
input in[];
output out[];
}
network Tictoc1
{
submodules:
tic: Txc1;
toc: Txc1;
tac: Txc1;
connections:
tic.out++ --> { delay = 100ms; } --> toc.in++;
tic.in++ <-- { delay = 100ms; } <-- toc.out++;
toc.out++ --> { delay = 100ms; } --> tac.in++;
tac.in++ <-- { delay = 100ms; } <-- toc.out++;
tac.out++ --> { delay = 100ms; } --> toc.in++;
}