pthread_create en servidor http multiproceso

Aug 22 2020

Suponga que el servidor maneja a los clientes de la siguiente manera:

void* handle_request(void* client_sck);

int client_sck;

while((client_sck = accept(...)) != -1)
{
    /*
    .
    .
    .
    */
    
    pthread_create(&thr, 0, handle_request, (void*)&client_sck);    
}

¿Es seguro decir que, en cada iteración del ciclo, el último argumento pasado pthread_createse compartirá entre hilos? Lo que significa que la segunda vez, client_sck todavía tiene la misma dirección de la iteración anterior.

Respuestas

1 VolkerStolz Aug 22 2020 at 15:04

Sí. Esto significa que el siguiente accept() puede sobrescribir el valor antes de que el subproceso anterior tuviera la oportunidad de obtener el valor, por lo que no es un buen diseño.