Erlangでたくさんのチャットの例を見てきましたが、ワークキューのようなリストはどうですか?プロジェクト管理システムのようなワークキューシステムを構築したい場合、プロセスメールボックス内のメッセージを並べ替えることはできますか、それともメッセージの優先順位を使用する必要がありますか?Erlangで構築されたワークフローシステムの例はありますか?
1077 次
3 に答える
8
Erlang のプロセス メッセージ キューでメッセージの順序を変更することはできません。
ただし、最も重要と思われるメッセージを最初に受信できる選択受信を行うことはできます。完全に同じというわけではありませんが、ほとんどの目的で機能します。
次に例を示します。
receive
{important, Msg} ->
handle(Msg)
after 0 ->
ok
end,
receive
OtherMsg ->
handle(Msg)
end
次のものとは異なります。
receive
{important, Msg} ->
handle(Msg);
OtherMsg ->
handle(Msg)
end
{important, Msg}
残りのメッセージの処理を続行する前に、常にメッセージ キュー全体をスキャンします。これは、これらの種類のメッセージが存在する場合、常に他のメッセージよりも先に処理されることを意味します。もちろん、これにはいくらかのパフォーマンス コストがかかります (キュー全体を 2 回スキャンするためにより多くの時間がかかります)。
于 2008-11-03T11:09:24.490 に答える
2
プロセスメールボックスは、ジョブキューの場合と同様に非常にうまく機能します。
選択的な受信パターンを簡単に記述できるように、メッセージに十分な情報を含めるだけで、メールボックスの内容を並べ替える必要がなくなります。
于 2008-11-13T02:04:00.097 に答える
2
メッセージの順序を変更する必要がある場合は、ゲートキーパーのパターンに従うことができます: メールボックスを別のプロセスとして具体化します。元のプロセスが別のメッセージの準備ができると、ゲートキーパーは、選択したルールに従って、転送するメッセージを計算できます。
于 2008-11-13T02:40:29.727 に答える