この循環依存関係を削除する方法

私は現在、スクリーンキャプチャソフトウェアを設計しようとしています。

私が抱えている1つの設計上の問題は、 PictureGetterとPictureProcessorの間の循環依存関係を排除することが可能かどうかを知りたいのです。

ゲッタは、画像が準備完了であることをプロセッサに知らせる必要があります。プロセッサは、画像の処理が完了したことをゲッターに伝えなければならない。

These two elements are in separate threads and cannot share data directly(and I do not want to share data), they can only add member calls of the target object onto that object's queue queue. (eg queue.add(&PictureProccessor::sendPicture,picture) )

enter image description here

3
うわー、真剣に@themel ??? RTFQとあなたは質問を得るでしょう。
追加された 著者 Shawn Mclean,
はい、私はすべてを宣言することができます。これは、私がその周りにデザインできる方法があるかどうかについての質問です。
追加された 著者 Lalaland,
@Pubbyええ、私は、メッセージがない場合にリーダーが待つことを確認するために、eventfd(セマフォのように動作するファイル記述子)を使用しています。
追加された 著者 Lalaland,
あなたの質問は?
追加された 著者 themel,
追加された 著者 Cyclonecode,
これを読んだことはありますか? en.wikipedia.org/wiki/Producer-consumer_problem
追加された 著者 Pubby,
オブザーバーパターンのような一般的なものはありますか?
追加された 著者 Vlad,

2 答え

リソースマネージャを使用して、両方のことを認識させてください。ゲッターは、マネージャーで処理される画像をエンキューすることができ、マネージャーは、処理のために使用できるプロセッサーの「プール」を持つことができます。プロセッサは、処理された画像をリソースマネージャーにエンキューすることができ、適切なゲッターに通知することができます。私はこのパターンのためのいくつかのファンキーな名前があると確信していますが、今それを思い出すことはできません。

6
追加された
ええ、これは私が探していたものです(私の画像管理の問題も解決しています)。ありがとうございました。
追加された 著者 Lalaland,

getterからprocessorまでの1要素キューを作成するかもしれません。

ゲッターは写真を送る。プロセッサが完了すると、キューは空になります。

0
追加された