pthread_create na wielowątkowym serwerze http

Aug 22 2020

Załóżmy, że serwer obsługuje klientów w następujący sposób:

void* handle_request(void* client_sck);

int client_sck;

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

Czy można bezpiecznie powiedzieć, że przy każdej iteracji pętli ostatni przekazany argument pthread_createbędzie współdzielony między wątkami? Oznacza to, że za drugim razem client_sck nadal ma ten sam adres z poprzedniej iteracji.

Odpowiedzi

1 VolkerStolz Aug 22 2020 at 15:04

Tak. Oznacza to, że następny accept() może nadpisać wartość, zanim poprzedni wątek miał szansę pobrać wartość, więc nie jest to dobry projekt.