共有メモリ モデルを使用して、時間の経過に伴う数十万のオブジェクトの相互作用をシミュレートするシングル スレッド アプリケーションがあります。
明らかに、マルチ CPU ハードウェアに拡張できないという問題があります。
エージェントベースのモデリングと関数型プログラミング/アクターモデルについて少し読んだ後、メッセージパッシングパラダイムで書き直すことを検討していました。
アイデアは非常に単純です。各オブジェクトがアクターになり、それらの相互作用がメッセージになり、シミュレーションが並行して行われるようになります。特定の時点でのオブジェクトの構成が与えられると、その将来の結果は簡単に計算できます。
問題は、時間をどのようにモデル化するかです。
たとえば、アクターとメッセージの計算順序が保証されていないため、オブジェクト X の動作が A と B に依存すると仮定しましょう。X が計算されるときに、A はすでに送信されている可能性があります。そのメッセージは X に送信されましたが、B には送信されませんでした。計算が正しく行われるようにする方法は?
質問が明確であることを願ってい
ます。