pthread_create dans un serveur http multithread
Aug 22 2020
Supposons que le serveur gère les clients de la manière suivante :
void* handle_request(void* client_sck);
int client_sck;
while((client_sck = accept(...)) != -1)
{
/*
.
.
.
*/
pthread_create(&thr, 0, handle_request, (void*)&client_sck);
}
Est-il sûr de dire que, à chaque itération de boucle, le dernier argument passé à pthread_createsera partagé entre les threads ? Cela signifie que la deuxième fois, le client_sck a toujours la même adresse de l'itération précédente.
Réponses
1 VolkerStolz Aug 22 2020 at 15:04
Oui. Cela signifie que le suivant accept() peut écraser la valeur avant que le thread précédent n'ait eu la chance de récupérer la valeur, ce n'est donc pas une bonne conception.