pthread_create auf einem Multithread-HTTP-Server

Aug 22 2020

Angenommen, der Server behandelt Clients auf folgende Weise:

void* handle_request(void* client_sck);

int client_sck;

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

Kann man mit Sicherheit sagen, dass bei jedem Schleifendurchlauf das letzte übergebene Argument von den pthread_createThreads geteilt wird? Das heißt, beim zweiten Mal hat client_sck immer noch dieselbe Adresse wie bei der vorherigen Iteration.

Antworten

1 VolkerStolz Aug 22 2020 at 15:04

Ja. Dies bedeutet, dass der nächste accept() den Wert überschreiben kann, bevor der vorherige Thread die Chance hatte, den Wert abzurufen, also ist es kein gutes Design.