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.