我有一个客户端 - 服务器应用程序,我的服务器必须并行处理每个客户端请求。所以我决定为每个请求创建线程。这样做是个好主意吗?内部线程我将发送响应给客户端,所以我不打扰关闭线程。创建多个线程来处理多个请求是否很好?
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;
}
是的,它被称为多线程服务器,但通常你只是捕捉连接,让线程读写客户端。 –
如果不需要,创建多个线程是可以的,但是为每个请求创建一个线程是不好的。改用线程池。线程创建/销毁的代价很高,而且由于每个线程都需要自己的堆栈,因此它们需要大量的内存。根据需要尽可能多地使用,但不要多。 – Carcigenicate
自C++ 11以来,您可以使用'std :: thread'。 – Jarod42