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.