gpt4 book ai didi

mysql - 这是否足够,或者我是否有竞争条件?

转载 作者:行者123 更新时间:2023-11-29 02:37:08 26 4
gpt4 key购买 nike

我正在为网络编写一种策略类多用户游戏。它有一个运动场(X x Y 方 block ),我计划将其序列化并存储在 MySQL(innodb)数据库中的 BLOB 中,每一行代表每个正在进行的游戏。

我现在尝试找出一个好方法来保持数据库随着游戏场的任何变化而更新,同时找到一个方便的解决方案来处理加载之间的时间范围内游戏场发生的事情页面并实际采取行动。
我不使用 AJAX。

每局游戏最多有 20 名玩家,每名玩家在 24 小时内走 1 到 10 步,因此这是一个“慢”游戏。

我的计划(到目前为止)还为 blob 旁边的运动场存储一种校验和,并在尝试更改运动场之前将数据库状态与加载的状态进行比较。

我担心的是如何防止竞争条件。
是否足以:

  1. 开始交易。
  2. 从表格中加载运动场
  3. 如果校验和不同 - 回滚并更新用户 View
  4. 如果校验和未更改 - 更新表并提交更改

BEGIN TRANSACTION 是否足以阻止竞争,或者我是否需要在第 2 步中做更多的事情来表明我更新表的意图?

感谢所有建议。

最佳答案

如果您使用 SELECT ... FOR UPDATE当您从数据库加载 playfield 时,它会阻止其他选择,直到您提交或回滚事务。

关于mysql - 这是否足够,或者我是否有竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3557928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com