我有一个客户端 - 服务器应用程序,我的服务器必须并行处理每个客户端请求。所以我决定为每个请求创建线程。这样做是个好主意吗?在内部线程中,我将向客户发送响应,因此我不打算关闭线程。
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;
}
答案 0 :(得分:0)
这样做是个好主意吗?
不,这不是个好主意。
从Windows Vista和Server 2008开始,您可以使用(新)ThreadPool API。
为每个传入请求显式创建一个新线程会产生一定的开销,并会降低服务器性能。