コンセプトは、彼らはそれの部分を仕事として、複数の独立したプロセスは、黒板を実行し、更新することです。古典的な例は音声認識です。入力データは、認識されるべき音声である。オーディオをセグメント化することができ、複数のスレッドがスニペットを単語に一致させ始める。各スレッドは一致する単語を見つけると、この点まで黒板を翻訳で更新します。フレーズの組み立てが始まると、別のスレッドが文法チェックを行い、さまざまなレコグナイザスレッドが行っている選択を検証できます。単語の信頼性が低く、文法に違反している場合、その部分は再実行して代替案を探し出すことができます。これにより、スタッターやポーズが解決されたときにオーディオデータを再分割することさえあります。
フレーズがセンテンスになると、さらに大きなビューを撮ることができ、ホモフォン(ペア、ペア)のさまざまなオプションを解決できます。これはすべてのプロセスに対して黒板を開き、さまざまな結果がロールインされるときにのみ適用される「ロック」によって実現されます。データベースを黒板として使用することは、しかし、データがどれくらい積極的に更新され、再読み込みされているかによって異なります。非常に迅速に起こっている場合は、ラウンドトリップが追加され、メモリ構造がより合理的になります。
メディエータのアイデアは、単一のロックポイントを作成するので意味があります。黒板アルゴリズムは、すべてのデータ要素を前面に表示するため、A-> B、B-> Aスタイルのデッドロックになることはめったにありません。それを超えると、ロックをあきらめることは、データがロールインする際に、さまざまなサブタスクが常に再開されるため、大きなペナルティではありません。ボードの購読者は、所有しているデータが古くなったとき、最新のデータでタスクを再起動するコールバックを使用して行うことができます。
ワークフローに関するコメント:ここでの主な違いは、ほとんどのワークフローは、入力されたばかりの状態をとり、データが移動できる状態がどのようになっているかを判断するマスタプロセスによって調整されることです。独立した俳優がいるかもしれませんが、より良い成果(他の仕事が使用する)を創出することによって、互いを「凌駕」することはめったにありません。言い換えれば、ワークフローは通常、データが通過する非常に制限された状態のセットですが、黒板は独立したすべての活動のためにほぼ自由です。 (つまり、黒板があなたのワークフローの背後にある可能性があります:http://sunsite.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-247/FORUM_15.pdf)
私が見たパターンのC#の例は考えられません。私がする仕事の種類はそれほど必要ありません(計算は決定論的である)。いくつかの検索を行うと、他の言語での参照が見つかりますが、それは素晴らしい品質のものではありません。
「ワークフロー」よりも優れていることを知ることにも興味があります。 – Mank