параллелизм — как использовать блокировки для синхронизации?

У меня есть база данных MySQL и онлайн-сайт (с PHP на бэкэнде).

Если пользователь A отправляет деньги B, но B одновременно отправляет деньги A, возникает условие гонки.

Есть несколько других более сложных условий гонки, чем просто отправка денег (например, обмен нескольких предметов одновременно на несколько других предметов — каждый предмет соответствует строке в таблице MySQL).

В PHP есть ли глобальная блокировка, на которую я могу ссылаться по идентификатору пользователя?

Псевдокод того, что я хочу:

lock_acquire($user_A->id);
lock_acquire($user_B->id);

//do some sensitive stuff between user A and user B

lock_release($user_A->id);
lock_release($user_B->id);

Есть ли такая функция в PHP?

Заранее спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …