私は自分のプロジェクト (C/C++) としてオーディオ ストリーマー (クライアント サーバー) を作成しており、このプロジェクト用にマルチスレッド UDP サーバーを作成することにしました。
この背後にあるロジックは、各クライアントが独自のスレッドで処理されるということです。私が抱えている問題は、スレッド同士の干渉です。
サーバーが最初に行うことは、一種のスレッドプールを作成することです。関数によってすべてが自動的にブロックされる5つのスレッドが作成されますがrecvfrom()
、ほとんどの場合、別のデバイスをサーバーに接続すると、複数のスレッドが応答し、後でサーバーが完全にブロックされ、それ以上操作しないでください。
これをデバッグするのもかなり難しいので、マルチスレッド UDP サーバーが通常どのように実装されているかについてアドバイスを得るためにここに書きます。
コードの一部でミューテックスまたはセマフォを使用する必要がありますか? もしそうなら、どこですか?
どんなアイデアでも非常に役に立ちます。