Bonsoir,
J'ai de nouveau un probleme...
Je doit coder un ensemble de fonctions de gestion des thread (pthread.h en bien plus simple).
Ma fonction t_yield() doit mettre en pause le thread qui l’exécute.
Pour ce faire j'utilise, dans t_yield() la fonction sigsetjump qui sauvegarde l'environnement d'execution. Puis une autre fonction qui recharge l'environnment par la fonction siglongjmp().
Le probleme c'est qu'a la recharche de l'environnement, la fonction t_yield() reprend mais ne revient jamais à la fonction du thread en question => erreur de segmentation
Dans le terminal, je vois :
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 int t_yield() { int test; if ( (test=sigsetjmp( environnement, 0 )) == 0 ) siglongjmp( env_ordonnanceur, 1 ); printf("toto\n"); return 0; } void fonction1() { printf("tata\n"); t_yield(); printf("hahahaha\n"); }
tata
toto
segmentation fault
Quelqu'un aurait une explication ?
Merci.
Partager