Multithreading 仿真器上的单核多线程

Multithreading 仿真器上的单核多线程,multithreading,ubuntu,emulation,core,Multithreading,Ubuntu,Emulation,Core,英语不是我的母语,所以我为任何不恰当的使用道歉 我正在学习多线程程序,所以(在装有Windows8 HyperV的笔记本电脑上)我用一个核心处理器(在笔记本电脑上我有两个,实际上是四个)制作了模拟的Ubuntu12.04.4。 (处理器:英特尔(R)Core(TM)i5-3210M处理器@2.50GHz|||RAM:6,00 GB|||系统:Windows 8 64位) 在论坛和教程中搜索了几个小时后,我开始测试一些代码,但发现线程的执行顺序不正确 代码: 输出: 问题-这个问题可能与单核或仿真

英语不是我的母语,所以我为任何不恰当的使用道歉

我正在学习多线程程序,所以(在装有Windows8 HyperV的笔记本电脑上)我用一个核心处理器(在笔记本电脑上我有两个,实际上是四个)制作了模拟的Ubuntu12.04.4。 (处理器:英特尔(R)Core(TM)i5-3210M处理器@2.50GHz|||RAM:6,00 GB|||系统:Windows 8 64位)

在论坛和教程中搜索了几个小时后,我开始测试一些代码,但发现线程的执行顺序不正确

代码:

输出:


问题-这个问题可能与单核或仿真有关,还是我做了一些不正确的事情?

您没有做错任何事情。你之所以看到这样的结果是因为。。。嗯,因为事情就是这样。由于两个线程并行运行,因此存在竞争条件。对此您无能为力,因为您无法控制线程的顺序(这取决于操作系统)


尝试运行代码几次,您会不时看到相反的结果。

谢谢您提供的信息。我运行了30次代码,只有一次按照我想要的顺序执行()。那么-是否有任何函数或库可以控制线程的执行顺序?和-多个内核是否会将比率更改为1:30(我想要的执行与我没有预料到的执行)?@Taspats抱歉,但不是:无法控制线程的执行顺序。您所说的比率完全是随机的,不仅取决于代码,还取决于在后台运行的每个其他进程(操作系统必须在多个进程/线程之间划分一个核心)。此外,如果你想一段接一段地运行代码(即顺序运行,而不是并行运行),那么使用线程有什么意义呢?我知道了。再次感谢您对该线程的支持和解释。:)