私は現在、複数のコンピュータで並列レンダリングを管理するアプリケーションをプログラミングしています。そのために、私は自分のサーバーアプリケーション上に、すべての質問に対して1つのスレッドであるTCP接続を管理するスレッドのプールを持っています。私は、ネットワークスレッドの1つがデータを受け取った場合、他のスレッドに警告するために、すべてのTCPスレッドで同じ条件変数を使用したいと思います。条件変数(POSIX並行API)を使用すると、実際には並列ネットワークコードが遅くなる可能性がありますか?
問題:POSIX APIでsignal
関数を使用するには、ミューテックスを使用する必要があります。これは、2つのネットワークスレッドが同時にデータを受信した場合、ミューテックスが実行を続けるために自由になるのを待たなければならないことを意味します。
現実的には、この条件変数を使用するとコードが実際に減速しますか?また、私はそれを使用したくない場合は、他のスレッド(条件変数にwait
を呼び出したスレッド)を作成して、ループして自分のネットワークスレッドが何かを受け取ったかどうかを調べることができます。
ありがとうございます:)