複数のクライアントにサービスを提供するデータディストリビューター(乱数の生成など)を設計しています。
クライアント C は、最初に関心のある番号のリストを TCP 経由で DD に送信し、UDP でデータをリッスンします。しばらくすると (数分)、クライアントは DD にさらに番号を送信して、サブスクリプション リストを更新できます。
これを 2 つの方法で設計できます。
最初:
New_Client_Connected_Thread(int sock_fd)
{
--Get Subscription
--Add to UDP Publisher List
--close(sock_fd)
}
クライアントが新しいデータ セットをサブスクライブするたびに、新しい TCP 接続が確立されます。
2番目:
New_Client_Connected_Thread(int sock_fd)
{
while(true)
{
--wait for new subscription list
--Get subscription
--Add to UDP Publisher List.
}
}
ここでは、クライアントごとに 1 つの TCP 接続のみが必要になります。
ただし、クライアントが新しいリクエストを送信しない場合、Client_Thread は不必要に長時間待機することになります。
私の Data Distributor が多くのクライアントにサービスを提供することを考えると、それらのどれが効率的な方法であると思われますか?