我想创建一个简单的井字棋游戏,供SAP系统用户之间玩耍。
我有一个CL_TTT_MANAGER类,其中包含一个注册方法(SIGNUP),用于为游戏分配玩家。我的类是共享内存启用的类,因为其目的是潜在地被所有SAP系统的用户访问。
注册过程使用非常简单的算法完成。
1:存在一个“WAITING_FOR_PLAYERS”标志,最初设置为ABAP_FALSE。 2:当第一个玩家调用“SIGNUP”时,该标志设置为“ABAP_TRUE”。 3:当第二个玩家调用“SIGNUP”时,该标志设置为“ABAP_FALSE”,并创建游戏实例。
我的SIGNUP方法存在问题,即它依赖于状态,即必须记住第一个玩家的名称,并使用私有属性来实现。
对于任何已经处理并发问题的人而言,你会发现存在数据竞争,即如果第二个玩家注册后,第三个玩家也注册了,那么第一个玩家的名称可能会被第三个玩家的名称替换。
我该如何在ABAP中同步这些内容?我有什么机制可以使用?我在文档中没有遇到过这样的情况(我只学习了2个月)。我需要自己实现这个机制吗,还是有一些可用的工具可以帮助我?