c-pthread_create在多线程http服务器中



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

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仍然具有与上一次迭代相同的地址。

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

最新更新