微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Linux上编程C ++与在Windows上编程Linux VM上的C ++

学习在Linux上编程C ++与在Windows上使用Linux VM进行学习有什么不同?

我最初的猜测是,没有什么区别 – 虚拟机就好像它是一个普通的Linux操作系统?

我这样做是为了在Linux上进行C ++编程,包括Linux内核,Linux如何工作,IPC,套接字,共享内存,pipe道等。

自动播放处理程序:错误的剪贴板格式?

Environment.GetFolderPath(Environment.SpecialFolder.System)和Environment.SystemDirectory for System32文件夹之间的区别

为什么从.o创build一个.a文件来进行静态链接

通过Teamviewer连接时,WPF应用程序崩溃

如何在文件系统中find一个循环?

无法用execl()启动jar

在Linux下通过串口通讯发送hex数据

在Windows上进行debugging时,stderr会去哪里?

如何使用FIFO等待某人写入和阅读?

开发ActiveX控件

在编写多线程程序或在共享数据上执行IPC时,可能遇到的最大问题就是VM。 不幸的是,由于大多数虚拟机的工作方式,最终可能会掩盖时间问题,这些问题会导致本机运行Linux内核的“真实”机器发生崩溃,或者至少是不合需要的行为。 例如,一个在虚拟机上可能看似良性的数据竞争,因为它在运行时不会崩溃,这可能会导致,由于物理机器上固有的更快的定时,可能会导致一个真正的数据竞争,可能很难调试。 与时间有关的问题的另一个例子可能是你有多个进程用一个阅读器写入管道的地方。 由于虚拟机的速度,您可能会观察到每个写入过程都能够自动将其整个有效负载写入管道的行为,即使该有效负载大于PIPE_MAX的保证原子性…如果您为该类型的行为,在实际机器上,您可能会感到惊讶,因为PIPE_MAX任何PIPE_MAX都会与其他进程交替写入管道。

所以最终,在VM上执行多线程编程或共享数据IPC时,您能够观察到缺少进程数据损坏或潜在数据竞争的崩溃,这一事实并不能保证您的程序实际上是数据竞争免费的,或者它不会在交错操作的时间更快的物理机上崩溃。 虚拟机的速度可以简单的掩盖这些问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐