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.