pthread_create di server http multithreaded

Aug 22 2020

Misalkan server menangani klien dengan cara berikut:

void* handle_request(void* client_sck);

int client_sck;

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

Apakah aman untuk mengatakan bahwa, pada setiap iterasi pengulangan, argumen terakhir yang diteruskan ke pthread_createakan dibagikan di antara utas? Artinya untuk kedua kalinya, client_sck masih memiliki alamat yang sama dari iterasi sebelumnya.

Jawaban

1 VolkerStolz Aug 22 2020 at 15:04

Iya. Ini berarti bahwa selanjutnya accept() dapat menimpa nilai sebelum utas sebelumnya memiliki kesempatan untuk mengambil nilai, jadi ini bukan desain yang baik.