Synchronization 共享内存对象同步

Synchronization 共享内存对象同步,synchronization,shared-memory,abap,Synchronization,Shared Memory,Abap,我想创建一个简单的Tic-Tac-Toe游戏,在SAP系统的用户之间进行 我有一个CL_TTT_MANAGER类,它有一个注册方法,可以将玩家分配到游戏中。我的类是一个支持共享内存的类,因为它的目的是潜在地被sap系统的所有用户访问 注册过程是使用一个非常简单的算法完成的 1:存在“等待玩家”标志,并设置为ABAP\U FALSE。起初。 2:当第一个玩家调用“注册”时,标志设置为“ABAP_TRUE”。 3:当第二个玩家调用“注册”时,标志设置为“ABAP_FALSE”,并创建游戏实例 我的注

我想创建一个简单的Tic-Tac-Toe游戏,在SAP系统的用户之间进行

我有一个CL_TTT_MANAGER类,它有一个注册方法,可以将玩家分配到游戏中。我的类是一个支持共享内存的类,因为它的目的是潜在地被sap系统的所有用户访问

注册过程是使用一个非常简单的算法完成的

1:存在“等待玩家”标志,并设置为ABAP\U FALSE。起初。 2:当第一个玩家调用“注册”时,标志设置为“ABAP_TRUE”。 3:当第二个玩家调用“注册”时,标志设置为“ABAP_FALSE”,并创建游戏实例

我的注册方法的问题是它依赖于状态,即它必须记住第一个玩家的名字,这是通过使用私有属性实现的

对于处理过并发问题的任何人来说,您都会发现一个数据竞争,即如果在第二个玩家注册之后,第三个玩家也注册了,那么第一个玩家的名字可能会被第三个玩家的名字替换


如何在abap中同步这些内容?我有什么机制?我在文档中没有遇到过类似的情况(我只学习了2个月)。我必须自己实现这一点,还是有什么可以帮助我?

这应该不是问题-在第三个玩家能够写入共享内存区域之前,他必须获得一个更改句柄,并且只要第二个用户仍然设置了更改锁,他就无法获得更改句柄。有关该主题的更多详细信息


请注意,稳定可靠的共享内存编程是在ABAP环境中(可能在任何环境中)最难完成的任务之一。我从你的其他问题中了解到,你对ABAP比较陌生-这么早就开始使用共享对象是雄心勃勃的。

SAP是一家公司(如Oracle),ABAP是他们的专有语言(如Java)。。。。但仅用于编程他们的系统。Thx用于信息和建议。我目前负责我自己的培训,所以我可能并不总是知道在我的编码冒险中我什么时候会踏入ABAP雷区:)。这是一个,相信我。这是一个有选择的雷区,它将允许仅限中央实例的开发和测试系统通过,并且只会炸毁具有多个应用服务器的生产环境。好吧,谢谢警告。我还没听说有危险,所以我会留意的。您是否对两个独立用户的两个实例之间如何以其他方式进行通信(数据库访问除外)有任何建议?不太可能。你将不得不滥用一些东西,因为系统不是为实时交互而设计的。