私はいくつかの客観的なC/iOS開発を行っており、アクターパターンへのいくつかの参照を聞いています。 Big Nerd Ranchの本では、次のように書かれています。
アクターオブジェクトは、実行時間の長いタスクと、完了後に実行する必要のあるコードがある場合に使用されます。この種類のオブジェクトには、タスクの実行に必要な情報と、タスクの完了時に実行するコールバックが与えられます。アクターはそれ以上の入力なしで独自のスレッドで実行され、終了すると破棄されます。
ここでのアクターは、ネットワークコールと組み合わせて使用されます。これは、アクターの主な使用方法ですか?委任に対して相互に排他的または無料ですか?アクターの定義は非常に広いようで、私はそれが何を意味するのかをより良く理解しようとしています。また、非OO環境でアクターを使用することは可能ですか?
アクターのその定義は、実際には少し制限されているようです。もちろん、Erlangスタイルのアクター(またはScalaスタイルのアクターを信じています)を処理しません。私の経験では、俳優は次のようなものです。
しかし基本的に、アクターは、その環境からメッセージを受信し、その環境にメッセージを送り返すことができるフリーランニングコードの塊です。
アクターは、たくさんの(そしてたくさんの)ステートフルで小さなプロセスが必要なときにいつでも使用されます。各接続にスレッド全体を割り当てたくないため、ネットワークは一般的な使用例です。より軽量なものが必要な場合は、各接続にアクターを割り当ててから、スレッドの小さなプールでアクターをスケジュールします。しかし、アクターを使用するのはネットワークだけではありません。
アーランでは、アクターは関数です。この関数はおそらくそれ自体を末尾呼び出しします(したがって、基本的に無限ループです)。ループは通常、システムからのメッセージを待って処理し、システムの残りの部分にメッセージを送信します。 Erlang OTPライブラリには、ループを記述する必要さえないいくつかの抽象化があるため、OTPアクターはコールバックのセットとして実装されます。そのように、OTPアクターはオブジェクトによく似ています。