問題タブ [actor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - scala の別のスレッドで単純なタスクを実行する
オーバーヘッドがあまりない、scala の別のスレッドで非常に単純なタスクを実行する方法があるかどうか疑問に思っていました。
基本的に、任意の数のタスクの実行を処理できるグローバルな「エグゼキューター」を作成したいと考えています。その後、executor を使用して、追加の構成を構築できます。
さらに、クライアントがブロッキングまたは非ブロッキングの考慮事項を考慮する必要がなければよいでしょう。
Scala アクター ライブラリは Doug Lea FJ のものの上に構築されており、私が達成しようとしていることをある程度サポートしていることも知っています。ただし、私の理解では、「アクター プール」を事前に割り当てて達成する必要があります。
このためのグローバル スレッド プールを作成することは避けたいと思います。
簡単な例を次に示します。
次に、exec の使用例を示します。
最後にサンプルを実行します (HotSpot がウォームアップできるように、数回実行する必要があるかもしれません):
sockets - Scala リモート アクターの TCP_NODELAY 設定を制御するには?
私は Scala のリモート アクターを使用していますが、(些細なメッセージであっても) ラウンドトリップ時間は 80 ミリ秒です。これはおそらく、基礎となるソケットが TCP/IP Nagle アルゴリズム (TCP_NODELAY とも呼ばれます) を無効にしていないためです。 Java RMI の経験がある程度あると教えてくれます。
リモート アクターへのリンクを取得するためにクライアントで行っていることは、
基礎となるソケットを取得して呼び出す方法はありjava.net.Socket.setTcpNoDelay()
ますか?
scala - Scalaアクター-最悪のプラクティス?
Scalaでアクターを使用することに少し不安を感じます。作業方法に関するドキュメントを読んだことがありますが、それらを自由に使用するには、いくつかの禁止ルールも必要になると思います。私はそれらを間違った方法で使用することを恐れていると思います、そして私はそれに気付くことさえありません。
適用された場合、Scalaアクターがもたらすメリットを壊したり、誤った結果をもたらしたりするようなことを考えられますか?
scala - Scala アクターでアイドル処理を行う最も簡単な方法は?
クライアントが要求するたびに何らかの作業を行うscalaアクターがあります。クライアントがアクティブでない場合にのみ、アクタにバックグラウンド処理を実行させたいと考えています。
これを行う最も簡単な方法は何ですか? 私は2つのアプローチを考えることができます:
タイムアウトしてアクターを定期的にウェイクアップする新しいスレッドを生成します。単純なアプローチですが、別のスレッドを作成することは避けたいと思います (余分なコード、複雑さ、オーバーヘッドを避けるため)。
Actor クラスには、actor 自体からのタイムアウトに使用できる reactWithin メソッドがあります。しかし、ドキュメントには、メソッドが返されないと書かれています。だから、私はそれを使用する方法がわかりません。
編集; 説明:
バックグラウンド タスクは、個別に処理できる小さな単位に分割できると仮定します。
scala - アクターのスレッドプールを指定する方法
グローバルスレッドプールを使用する既存のjava/scalaアプリケーションがあります。プロジェクトでアクターの使用を開始したいのですが、アプリ内のすべてが同じプールを使用したいと思います。
アクターが使用するスレッドの最大数を設定できることはわかっていますが、スレッドプールを共有することをお勧めします。これは必要/合理的であり、アクターのスレッドプールを指定することは可能ですか?
それが不可能/推奨されていない場合、すでにスレッドを使用しているアプリにアクターを統合する際の経験則はありますか?
ありがとう。
scala - Scala アクターにメッセージを送信するためのシンボルまたはケース クラス?
Scala アクターの例では、パラメーターなしのメッセージがアクター ( thisなど) に送信される場所を確認しましたcase class
。es (またはcase object
s) が作成され、メッセージとして使用されます。シンボルも同じように機能し、少しきれいに見えます。Erlang に関する本を読んだ後では、より自然に見えます。リモート アクターに対しては、シンボルの等価性が機能すると思います。
パラメーターを持つメッセージの場合、ケース クラスが当然の選択になるため、メッセージ タイプ間の一貫性が 1 つの問題になるのではないでしょうか?
いずれかのアプローチを採用する理由はありますか?
scala - Scala アクターで共有リソースにアクセスする適切な方法
Java では、マルチスレッド環境で必要な共有リソースにアクセスするメソッドまたはブロックを同期します。
これを行う「Scala Actors」の方法がどのように機能するのか疑問に思っています。
java.sql.Connection
スレッドセーフなアクセスを提供したいオブジェクトの接続プールがあるとします。メッセージを受信し、送信者に接続を返すアクターとして実装します。
これを行うには、次の 3 つの方法があるようです。
- 未来を使う
- 使用する
!?
- 必要なクラスを
Connection
アクターにする
コード:
永久にブロックできるという事実を除けば、Future バージョンが最もクリーンに見えます。
何か考えがありますか、それとも私の考え全体が間違っていますか?
scala - ガベージ コレクション scala アクター
シナリオ: 私はこのコードを持っています:
MyActor インスタンスはガベージ コレクションされますか? そうでない場合、どうすればそれを確認できますか? ('actor' メソッドを使用して) アドホック アクターを作成した場合、そのアクターは GC されますか?