Я создаю браузерную ролевую игру, в которой у игрока есть инвентарь и склад.Представьте, что в какой-то момент пользователь хочет переместить предмет из инвентаря на склад.И теперь безопасность должна быть жесткой.
Я полагаю, что это должна быть транзакция.Теперь вы видите возможности для состояния гонки здесь.Перемещение из inv-> warehouse в то же время, что и перемещение со склада-> inv, может означать, что предмет дублируется.
Итак, как мне справиться с этим, чтобы ничего подобного не происходило?
РЕДАКТИРОВАТЬ - УСЛОВИЯ РАСЫ ДЛЯ ЭТОГО ПРИМЕРА
Перемещение от inv к складу - это функция, при которой предмет из inv сначала добавляется на склад, а затем удаляется из инвентаря.Перемещение со склада в инв это та же идея.
Теперь подумайте о 2 одновременных ходах.Функция перемещения In добавляет товар на склад.В то же самое время начинается обратное.Склад перемещает точный предмет в инвентарь.Он найдет предмет для перемещения, так как он был только что перемещен.Инвентарь теперь удаляет предмет из инвентаря.Склад удаляет товар со склада.
Результат: Товар утерян