最近在测试时常常多个项目同时进行,于是便遇到以下问题:
错误发生于对列表进行打乱的函数shuffle()中获得随机数得random_device(),该错误发生并无任何规律,任何时间都可能发生,但一般并行的进程越多,发生概率越大,经粗略查询得避免该错误得方法为将
shuffle(a.begin(), a.end(), random_device());
改为
shuffle(a.begin(), a.end(), random_device("rdrand"));
后续再无发生错误情况。
参考:
random_device: rdseed failed · Issue #319 · xdspacelab/openvslam · GitHub
https://github.com/googleapis/google-cloud-cpp-common/pull/208