私は現在、演習として単純な P2P ネットワークを開発しています。ネットワーク内の各ノードは、他のノードのサブセットにハートビートを送信して、ネットワークを離れたノードを検出できるようにします。ハートビート パケットのほかに、新しいノードがネットワークに参加/離脱するとき、リソース (小さなテキスト ファイル) を見つけたいときなどにパケットを送信します。すべてのパケットは UDP パケットです。
パケットを受信するたびに、その特定のパケットを処理する新しいスレッドを開始します。ただし、1 つのアプリケーションの有効期間中に開始するスレッドの量が非常に多くなることに関心があります (特にハートビートのため)。(デッドロックなどのリスクもあり、避けたいところです)。
すべての着信パケットを配置し、そのキューからすべてのパケットを一度に 1 つずつ処理する単一のスレッド (生産者と消費者のパターンのようなもの) を持つキューまたは何かを用意することを考えました。送信者がパケットが失われたと思わないように、パケットを迅速に処理したいと考えています。
パケットごとに新しいスレッドを開始することなく、多数の異なる着信パケットを処理する最良の方法は何ですか? 私が持っているもの、プロデューサーを消費するもの、または別のものを使用する必要がありますか?