j'ai un tit soucis je n arrive pas du tout a gerer les signaux en C voila mon prob :
je dois realiser une pool de threads donc dans mon main je cree tout mes threads (qui seront donc bloques dans l attente d un signal...)
puis en fait je teste leur etat et si un thread est oisif je dois le reveiller en lui envoyant un signal pour le reveiller
pthread_kill (tid, sig) pour send le signal mais je sais pas comment preciser quel signal on envoie ? moi c juste pour reveiller le thread
de plus les methodes de receptions de signaux sont elles bloquantes ?
merci d avance
Publicité
Posté le 01-11-2003 à 10:38:44
souk
Tourist
Posté le 01-11-2003 à 10:39:33
---------------
L'inventeur de la cédille est un certain monsieur Groçon .
labynocle
for your talent respect
Posté le 01-11-2003 à 10:40:52
arrete je suis vraiment en galere souk
souk
Tourist
Posté le 01-11-2003 à 10:45:56
desole
va falloir attendre que les pros du C viennent trainer par la
ce serait du Java....j'aurais pu, mais la
---------------
L'inventeur de la cédille est un certain monsieur Groçon .
sdk
Posté le 01-11-2003 à 11:23:36
bah du fait un handler sur le sign que tu veut qui reveille ton pro
labynocle
for your talent respect
Posté le 01-11-2003 à 11:25:46
justement c'est ca que j ai pas bien compris peux tu m expliker un peu plus ?
torpe23
Posté le 01-11-2003 à 11:39:53
tu fais koi comme étude? quelle université ou ecole?
labynocle
for your talent respect
Posté le 01-11-2003 à 11:42:41
je suis en maitrise info a jussieu
mais bon la on parle signaux
labynocle
for your talent respect
Posté le 01-11-2003 à 12:03:12
je viens de penser c pas plus interessant de gerer l affaire avec les mutex ?
sdk
Posté le 01-11-2003 à 13:21:46
signal(SIG_xx,wakeup)
void wakeup(int n)
reveille toi !!!
Publicité
Posté le 01-11-2003 à 13:21:46
labynocle
for your talent respect
Posté le 01-11-2003 à 13:33:31
mouais suis pas super convaincu la
thread a deja son code c dedans qu il faut que je precise qu il attends un signal... non ? et justement c le fait de lui d attendre un signal precis que j arrive pas a gerer et je sais pas si c bloquant ou si y a moyen des l exec d endormir le thread qui se reveillera uniquement lors de reception du signal
torpe23
Posté le 02-11-2003 à 14:29:37
Je te conseilles de le faire avec des mutex (en tout cas, c'est comme ça que je l'ai fait moi! ). Les threads se bloquent sur un mutex , que le serveur débloque si une connexion arrive.
Message édité par torpe23 le 02-11-2003 à 14:29:59
labynocle
for your talent respect
Posté le 04-11-2003 à 09:20:41
ouais j ai vu qu on peut faire ainsi mais je prefere la solution avec les signaux en fait les threads attendent sur un sigwait(SIGUSR1) et le thread principal fait un pthread_kill(tid,SIGUSR1) au thread libre pour traiter la requete visiblement ca devrait fonctionner...
torpe23
Posté le 07-11-2003 à 14:27:20
les signaux, c'est moche! Surtout SIGUSR1 !!!
Utilise les mutex, c'est fait pour ça!
labynocle
for your talent respect
Posté le 08-11-2003 à 15:30:39
ouais mais j'ai du mal avec les mutex alors je fais comme je peux
mais visiblement c'est ok j ai un truc a revoir et c'est good