使用omnet++模拟网络时
void broadcast(std::vector<int> &dest){
EV << "send msg to "<< dest.size() << " nodes" << endl;
if(dest.size() == 0)
throw cRuntimeError("At least one neighbor!");
// sending ...
}
并得到结果
> INFO: send Tictoc to 1 nodes
> At least one neighbor!
为什么输出中
dest.size()
是1,而最后的判断代码是0? dest 是类的私有编号,没有其他函数可以更改它。
如何让程序运行
您可能会同时访问代码的不同部分。使用线程安全,以便您只能从一个地方访问变量
std::lock_guard<std::mutex> lock(mutex);
if(dest.size() == 0)
throw cRuntimeError("At least one neighbor!");