我正在使用“pthread”库在 C++ 中编写一个多线程程序,但是当我在 Ubuntu 虚拟机上执行它时,尽管我有一个多核处理器(i7-2630QM),但我的线程似乎并没有并行运行。 . 代码太长了,所以我将用这个简单的代码来解释我的问题:
#include <iostream>
#include <pthread.h>
using namespace std;
void* myfunction(void* arg); //function that the thread will execute
int main()
{
pthread_t thread;
pthread_create(&thread, NULL, myfunction, NULL); //thread created
for (int i=0; i<10; i++) //show "1" 10 times
cout << "1";
pthread_join(thread, NULL); //wait for the thread to finish executing
return 0;
}
void* myfunction(void* arg)
{
for (int j=0; j<10; j++) //show "2" 10 times
cout << "2";
return NULL;
}
当我在主机操作系统(带有 VC++2010 的 Windows 7)上运行此代码时,我得到类似的结果12212121211121212...
,这是多线程应用程序应该做的,但是当我在来宾操作系统上运行相同的代码时(Vmware 上的代码::块)我总是得到11111111112222222222
!AFAIK 线程应该与 main() 函数并行运行,而不是顺序运行。我的VM的核数设置为4,但是程序好像只用了一个核,不知道是什么问题?是代码还是...?我在这里错过了什么吗?感谢您的帮助,提前感谢,请原谅我的英语:/