Ubuntu 11.10 sur Vmware : problème de multi-threading?
Salut tout le monde :)
je suis entrain d'écrire un programme multithread en C++ en utilisant la bibliothèque "pthread", mais quand j'arrive à l’exécuter sur Ubuntu (installé sur une machine virtuelle), les threads et la fonction principale semblent de s’exécuter l'un après l'autre et non pas en parallèle! pourtant je possède un processeur multicore :?
Mon code est trop long, donc je vais décrire mon problème avec ce simple code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #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;
} |
Voila! quand j’exécute ce code sur mon OS hôte (Windows 7 | VC++2010) j'obtiens comme résultat "12212121211212112112121212...", ce qui est normalement un résultat logique d'une exécution en parallèle.
Le même code lorsque je l'exécute sur le OS invité (Ubuntu virtuelle | Code::Blocks) j'obtiens toujours "11111111111111111122222222222222222..." !!
Le thread crée et la fonction main() dans le code ci-dessus vont normalement exécuter en parallèle! mais ce n'est pas le cas puisque les 2 s'affichent après que l'affichage des 1 se termine, pourtant la machine virtuelle est configurée sur 4 cores mais il semble que le programme utilisent seulement un core, pas plus.
Je suis nouveau avec les threads et j'aime bien si quelqu'un peut m'aider à résoudre ce problème.
Merci d'avance :)