çok iş parçacıklı http sunucusunda pthread_create

Aug 22 2020

Sunucunun istemcileri şu şekilde ele aldığını varsayalım:

void* handle_request(void* client_sck);

int client_sck;

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

Her döngü yinelemesinde, iletilen son argümanın pthread_createiş parçacıkları arasında paylaşılacağını söylemek güvenli mi? İkinci kez, yani client_sck önceki yinelemeden aynı adrese sahiptir.

Yanıtlar

1 VolkerStolz Aug 22 2020 at 15:04

Evet. Bu , önceki iş parçacığının değeri getirme şansı vermeden önce bir sonraki accept() değerin üzerine yazabileceği anlamına gelir , bu nedenle bu iyi bir tasarım değildir.