私はクライアントサーバーアプリケーションを持っており、私のサーバーは各クライアント要求を並列に処理する必要があります。だから、私は各リクエストごとにスレッドを作成することにしました。このようにするのは良い考えですか?スレッドの中で私はクライアントに応答を送るので、スレッドを閉じることについては気にしません。複数の要求を処理するために複数のスレッドを作成することをお勧めしますか?
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