pthread_create no servidor http multithread

Aug 22 2020

Suponha que o servidor trate os clientes da seguinte maneira:

void* handle_request(void* client_sck);

int client_sck;

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

É seguro dizer que, em cada iteração do loop, o último argumento passado para pthread_createserá compartilhado entre as threads? Ou seja, na segunda vez, o client_sck ainda tem o mesmo endereço da iteração anterior.

Respostas

1 VolkerStolz Aug 22 2020 at 15:04

Sim. Isso significa que o próximo accept() pode sobrescrever o valor antes que o thread anterior tenha a chance de buscar o valor, portanto, não é um bom design.