多线程http服务器中的pthread_create

问题描述

假设服务器以以下方式处理客户端:@H_502_1@

void* handle_request(void* client_sck);

int client_sck;

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

可以肯定地说,在每次循环迭代中,传递给pthread_create的最后一个参数将在线程之间共享吗?表示第二次出现,client_sck仍然具有与上一次迭代相同的地址。@H_502_1@

解决方法

是的。这意味着 next accept()可以在 previous 线程有机会获取该值之前覆盖该值,所以这不是一个好的设计。