5

SAP システムのユーザー間でプレイする単純な Tic Tac Toe ゲームを作成したいと考えています。

プレイヤーをゲームに割り当てる SIGNUP メソッドを持つ CL_TTT_MANAGER クラスがあります。私のクラスは共有メモリ対応のクラスです。その目的は、SAP システムのすべてのユーザーがアクセスできる可能性があるためです。

サインアップ手順は、非常に単純なアルゴリズムを使用して行われます。

1:「WAITING_FOR_PLAYERS」フラグが存在し、ABAP_FALSE に設定されています。最初に。2:最初のプレーヤーが「SIGNUP」を呼び出すと、フラグは「ABAP_TRUE」に設定されます。3:2番目のプレイヤーが「SIGNUP」を呼び出すと、フラグが「ABAP_FALSE」に設定され、ゲームインスタンスが作成されます。

私の SIGNUP メソッドの問題は、状態に依存していることです。つまり、最初のプレーヤーの名前を覚えておく必要があり、これはプライベート属性を使用して実現されます。

同時実行の問題に取り組んだことがある人なら誰でも、データの競合に気付くでしょう。つまり、2 番目のプレーヤーがサインアップした直後に 3 番目のプレーヤーもサインアップすると、最初のプレーヤーの名前が最初のプレーヤーの名前に置き換えられる可能性があります。三番。

これらをabapで同期するにはどうすればよいですか? これにはどのようなメカニズムがありますか?ドキュメントでこのようなものに遭遇したことはありません(私は2か月しか勉強していません)。これを自分で実装する必要がありますか、それとも私を助ける何かがありますか?

4

1 に答える 1

3

これは問題ではありません。3 番目のプレイヤーが共有メモリ領域に書き込む前に、変更ハンドルを取得する必要があります。2 番目のユーザーがまだ変更ロックを保持している限り、変更ハンドルを取得することはできません。設定。そのトピックの詳細については、ドキュメントを参照してください。

安定した信頼性の高い共有メモリ プログラミングは、ABAP 環境 (おそらくどの環境でも) で達成するのが最も困難なタスクの 1 つであることを認識しておいてください。他の質問から、あなたが ABAP に比較的慣れていないことがわかりました。共有オブジェクトを非常に早くから始めるのは野心的です。

于 2012-08-22T14:49:56.057 に答える