问题描述
假设服务器以以下方式处理客户端:@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 线程有机会获取该值之前覆盖该值,所以这不是一个好的设计。