Je pense qu'il ne devrais pas utiliser du sleep...
Un select avec un timeout serait plus instruit je pense.
struct timeval tv;
while(1)
{
/* Pendant 5 secondes maxi */
tv.tv_sec = 5;
tv.tv_usec = 0;
select(0, NULL, NULL, NULL, &tv);
/* Si condition tu sorts */
if (condition)
return 0;
/* Ton code ici */
}
La nuance est que si il reçoit un sigkill ou autre son sleep va pas s'interrompre avant d'être vraiment finis.
Alors que le select finira avant.
Enfin j'avais vu ça y a deux ans, je retrouve plus le code donc je sais pas trop comment j'avais fait pour pas me taper le timeout du sleep lorsque le signal de sortie est reçu.
# Simple....
Posté par pasBill pasGates . Évalué à 2.
while(1)
{
Sleep(xxxx)
if (thread_dois_s_arreter) //a toi de voir comment signaler ca
return;
//ici tu fais ce que le thread est sense faire
}
[^] # Re: Simple....
Posté par Obsidian . Évalué à 1.
Ça fait deux posts de suite qui contiennent la même erreur !
[^] # Re: Simple....
Posté par BAud (site web personnel) . Évalué à 2.
[^] # Re: Simple....
Posté par pasBill pasGates . Évalué à 1.
Ok, je -->[]
[^] # Re: Simple....
Posté par Raphaël G. (site web personnel) . Évalué à 2.
Un select avec un timeout serait plus instruit je pense.
struct timeval tv;
while(1)
{
/* Pendant 5 secondes maxi */
tv.tv_sec = 5;
tv.tv_usec = 0;
select(0, NULL, NULL, NULL, &tv);
/* Si condition tu sorts */
if (condition)
return 0;
/* Ton code ici */
}
La nuance est que si il reçoit un sigkill ou autre son sleep va pas s'interrompre avant d'être vraiment finis.
Alors que le select finira avant.
Enfin j'avais vu ça y a deux ans, je retrouve plus le code donc je sais pas trop comment j'avais fait pour pas me taper le timeout du sleep lorsque le signal de sortie est reçu.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.