pthread_create nel server http multithread

Aug 22 2020

Supponiamo che il server gestisca i client nel modo seguente:

void* handle_request(void* client_sck);

int client_sck;

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

È sicuro affermare che, ad ogni iterazione del ciclo, l'ultimo argomento passato pthread_createsarà condiviso tra i thread? Significa che la seconda volta, client_sck ha ancora lo stesso indirizzo dell'iterazione precedente.

Risposte

1 VolkerStolz Aug 22 2020 at 15:04

Sì. Ciò significa che il successivo accept() può sovrascrivere il valore prima che il thread precedente abbia avuto la possibilità di recuperare il valore, quindi non è un buon progetto.