Ich möchte ein einfaches Tic Tac Toe-Spiel erstellen, das zwischen Benutzern eines SAP-Systems abgespielt wird.ABAP: shared memory objects synchronization
Ich habe eine Klasse CL_TTT_MANAGER mit einer SIGNUP-Methode, die Spieler einem Spiel zuweist. Meine Klasse ist eine Shared-Memory-fähige Klasse, da sie für alle Benutzer eines SAP-Systems geeignet ist.
Die Anmeldung wird mit einem sehr einfachen Algorithmus durchgeführt.
1: Ein Flag "WAITING_FOR_PLAYERS" existiert und ist auf ABAP_FALSE gesetzt. anfänglich. 2: Wenn ein erster Spieler "SIGNUP" aufruft, wird das Flag auf "ABAP_TRUE" gesetzt. 3: Wenn ein zweiter Spieler "SIGNUP" aufruft, wird das Flag auf "ABAP_FALSE" gesetzt und die Spielinstanz wird erstellt.
Das Problem mit meiner SIGNUP-Methode ist, dass sie sich auf den Status verlässt, nämlich dass sie sich den Namen des ersten Spielers merken muss, und dies wird mit einem privaten Attribut erreicht.
Für jeden von Ihnen, die mit Nebenläufigkeitsproblemen gearbeitet haben, werden Sie ein Datenrennen sehen, nämlich wenn sich unmittelbar nach der Anmeldung des zweiten Spielers ein dritter Spieler registriert, könnte der Name des ersten Spielers durch ersetzt werden der Name des Dritten.
Wie synchronisiere ich diese Dinge in abap? Welchen Mechanismus habe ich dafür? Ich habe so etwas in der Dokumentation nicht gesehen (ich habe nur für 2 Monate studiert). Muss ich das selbst umsetzen, oder hilft mir etwas?
gut SAP ist ein Unternehmen (wie Oracle) und ABAP ist ihre proprietäre Sprache (wie Java) .... aber nur für die Programmierung ihrer Systeme verwendet. –