pthread_create 在多线程 http 服务器中

pthread_create in multithreaded http server

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

void* handle_request(void* client_sck);

int client_sck;

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

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

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