如何解决为什么在Intel CPU上编译的代码会在AMD CPU机器上崩溃?
我有一个使用c + +开发的应用程序,该应用程序是在Visual Studio中,Windows上,带有Intel cpu的。
此应用程序在多台计算机上的多个位置都在使用,所有这些都使用Intel cpu。
最近,它已安装在具有AMD cpu的PC上。
在AMD机器上,通过某些功能,应用程序冻结并崩溃。
崩溃的功能使用boost线程锁定,然后使用标准的opencv功能(特别是aruco基准标记模块),因此我认为问题出在线程锁定上。
相关代码为:
//标题
const createBase = function (num) {
return num + 6
};
//第一个线程(生产者)
typedef boost::shared_mutex Lock;
typedef boost::unique_lock< Lock > WriteLock;
typedef boost::shared_lock< Lock > ReadLock;
Lock floorLock;
//线程二(消费者)
WriteLock f_lock2(floorLock);
frameFloor = image_ocv.clone(); //an opencv::Mat
f_lock2.unlock();
我曾尝试将它们换成ad-safe队列,然后崩溃仍然存在。
另一个第三方现在已经在不同的机器上对此进行了测试,并确认了行为。 运行正常的计算机与崩溃的计算机之间的唯一区别是英特尔与AMD cpu。
不幸的是,我没有任何AMD机器,因此在调试它时遇到了麻烦。
是否有任何原因导致在Intel cpu上编译的代码在AMD上崩溃? 我该如何解决这个问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。