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
le probleme c'est que la sortie donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
les 5 dernieres secondes sont comptées mais pas affichées !!!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>
Merci beaucoup d"avance !
Partager