创建多个线程来处理多个请求是一种好习惯吗?

时间:2017-09-04 17:25:26

标签: c++ windows multithreading

我有一个客户端 - 服务器应用程序,我的服务器必须并行处理每个客户端请求。所以我决定为每个请求创建线程。这样做是个好主意吗?在内部线程中,我将向客户发送响应,因此我不打算关闭线程。

void MyThreadFunction()
{
    //Process request and send response to client
    //.....
    //.....
    return;
}

int main()
{
    //.....
    //.....

    while(true)
    {
        DWORD   dwThreadId;

        if(!receive(clientid, data)) //API to receive data from client
        break;

        CreateThread(NULL, 0, MyThreadFunction, NULL, 0, &dwThreadId);   
    }

    return 1;
}

1 个答案:

答案 0 :(得分:0)

  

这样做是个好主意吗?

不,这不是个好主意。

从Windows Vista和Server 2008开始,您可以使用(新)ThreadPool API

为每个传入请求显式创建一个新线程会产生一定的开销,并会降低服务器性能。