J'écris une application réseau. et ont un problème concernant l'état de la course du filetage.programmation linux multithread, région de code atomique
"cd" est un descripteur de socket. l'un de mes thread récupère le descripteur de socket et envoie des données via le socket. Laisse dire que map_sd renvoie 5. Cependant un autre thread peut fermer le socket 5 et en affecter un autre. ce qui va détruire la logique du programme.
// wait until there is valid descriptor mapping
while(!(cd = map_sd(sd))){
sleep(1);
}
// forward PAYLOAD header
if(send(cd, &payload, sizeof(PAYLOAD), MSG_NOSIGNAL) < 0){
printf("send fail 813\n");
}
ce que je veux est de rendre le code ci-dessus « atomique » comment puis-je faire quand je suis en utilisant pthread dans linux bibliothèque ??
merci d'avance.
merci! C'est utile – daehee