我有一個客戶端 - 服務器應用程序,我的服務器必須並行處理每個客戶端請求。所以我決定爲每個請求創建線程。這樣做是個好主意嗎?內部線程我將發送響應給客戶端,所以我不打擾關閉線程。創建多個線程來處理多個請求是否很好?
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