2009-09-01 20 views
3

私はいくつかのストレージをラップするシステムでアクターを使用することを検討しています(データベースでも、メモリ内のコレクションでも可能です)。私がこれをやりたいのは、店舗への呼び出しを呼び出し元のコードからブロックしたくないためで、大量のメッセージを押し込もうとしているからです。アクターキューの最大サイズ?

アクタの受信メッセージキューが何十万ものメッセージを処理できますか?オブジェクトのメソッドを直接呼び出すコードと、途中にキューを持つアクターを配置するコードの間に、パフォーマンスの違いはありますか?

乾杯

ジョー

答えて

4

俳優メールボックスが変更可能な二重リンクリストとして実装さデキューです。サイズは使用可能なメモリによってのみ制限されます。あまりにも多くのメッセージを送信した場合、俳優がそれらを処理できるよりも速くOutOfMemoryErrorを受信します。

アクターにメッセージを送信するとメソッドが呼び出されています。メッセージをエンキューする、アクターに通知する、アクターにスレッドを割り当てるなどのオーバーヘッドがあります。そのメッセージの送信には多くの処理が必要です。したがって、古い古い同期メソッド呼び出しと比べてかなりのオーバーヘッドが発生します。もちろん、メソッドがそこに座ってしばらくブロックすると、少なくとも壁の時間は遅くなります。