PB sortie standard avec les PTHREAD !!!
Bonjour,
ça fait un moment que je bute sur ce probleme sans résultat :
pourquoi la sortie standard ne marche plus lorsqu'un pthread se termine ?
J'ai simplifié le programme au maximum (un Client/Serveur à la base) pour trouver le probleme et ... la solution...
ce bout de code compile en C++ avec g++ (sans doute en c aussi avec gcc), sous Linux ou sous windows avec cygwin (c'est mon cas) avec la commande
g++ -o tt test_thread.cpp -lpthread
le 'main' créer un thread qui va durer 5 secondes, et pendant ce temps, il compte 10 secondes
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <stdio.h>
#include <pthread.h>
#include <iostream>
using namespace std;
void* tache(void * arg)
{
printf("threaddémarrer attente de 5 sec...\n");
sleep(5);
}
int main(int argc, char argv[])
{
pthread_t thread_id;
pthread_attr_t attribut;
pthread_attr_init(&attribut);
pthread_attr_setdetachstate(&attribut,PTHREAD_CREATE_DETACHED);
if (pthread_create(&thread_id, &attribut,tache, NULL) == -1)
printf("Unable to create the thread\n");
for(int j = 0; j < 10; j++)
{
printf(" 'main' toujours en travail, j = %d\n", j);
sleep(1);
}
} |
le probleme c'est que la sortie donne :
Citation:
C:\cygwin\home\Administrateur>tt.exe
'main' toujours en travail, j = 0
threaddémarrer attente de 5 sec...
'main' toujours en travail, j = 1
'main' toujours en travail, j = 2
'main' toujours en travail, j = 3
'main' toujours en travail, j = 4
C:\cygwin\home\Administrateur>
les 5 dernieres secondes sont comptées mais pas affichées !!!
Merci beaucoup d"avance !