有一个奇怪的问题,同样的方法却有不同的结果

问题描述 投票:0回答:1

使用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 是类的私有编号,没有其他函数可以更改它。

如何让程序运行

c++ omnet++
1个回答
0
投票

您可能会同时访问代码的不同部分。使用线程安全,以便您只能从一个地方访问变量

std::lock_guard<std::mutex> lock(mutex);
if(dest.size() == 0)
    throw cRuntimeError("At least one neighbor!");
© www.soinside.com 2019 - 2024. All rights reserved.