私は、オーディオとビデオのキャプチャ、エンコーディング、多重化と書き込み用のスレッドを備えたビデオレコーダであるしばらくの間、マルチスレッドのC(Linux)アプリケーションを開発してきました。マルチスレッドCアプリケーションのフレームワークまたはパターン
私はpthread操作を使用してアドホックで一緒に投げ始めましたが、ロックやフラグ、シグナリングの設定と重複してポップアップするコードや状態のリファクタリングをサポートするように拡張しようとしています条件などが含まれます。
これまでのところ、私は作ってみたことは、このようなものである:各スレッドがミューテックスロックと二つの条件を持っている必要があり
- - スレッドがやって終わった合図するために、スレッドや他の目を覚ますために1別のスレッドが待っている可能性のある作業
- データキューは、特定のスレッドによって「所有」され、そのスレッドのロックを使用して保護されます。
- 各スレッドは、「アクティブ」および「非アクティブ」の状態と、実行されたときにそれらと信号との間を移動することができるという概念を必要とします。
構造体に共通の要素を格納し、すべてのスレッドの開始、確認、および停止にループできる構造体の配列を持つことを計画しています。
これは一般的なスレッドサポートモデルに変わりました。私は車輪を革新的に再発明していると思っていましたので、私が適用しなければならない良い既知のパターンがあるかどうかここで尋ねます。
[Glib](http://developer.gnome.org/glib/stable/)を見てください。 glib-core.html) –
@AlexandreC。Glibについてよく分かりませんが、スレッドを抽象化して体重を増やすように見えます。スレッドインタラクションモデルを探しています。 – blueshift