首页 > 解决方案 > 多线程 http 服务器中的 pthread_create

问题描述

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

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

标签: cunixpthreads

解决方案


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


推荐阅读