Перейти к основному контенту

Блокировки как средство управления параллелизмом

Блокировки и состояние гонки являются центральными концепциями в контексте многопользовательских систем и совместного использования ресурсов. Понимание этих понятий особенно важно при работе с общими данными, которыми могут взаимодействовать два или более пользователя.

Почему блокировки важны для вашего бизнеса

Не редко случаются ситуации, когда нескольким пользователям в одно и то же время требуется взаимодействие с одними и теми же данными. Например, два пользователя могут одновременно попытаться зарегистрироваться на один и тот же временной слот. Без применения блокировок, в базу данных поступят две заявки на одно и то же время, что приведет к проблемам, особенно если другие временные слоты уже заняты.

При использовании блокировок вы сможете обеспечить последовательное выполнение операций, запрошенных одновременно, гарантируя таким образом более надежную работу вашего приложения.

Приложение Metabot предоставляет различные функции для работы с блокировками в контексте вашего бизнеса или конкретного бота. Это может быть особенно полезно во многих сценариях, в которых важно обеспечить согласованность и предотвратить конкурирующие операции.

Подробное описание назначения блокировок с описанием примеров смотрите в статье про блокировки в нашем блоге. ДОБАВИТЬ ССЫЛКУ!

Методы блокировок в Metabot

Приложение Metabot предлагает ряд методов, которые помогают управлять блокировками.

Метод Описание
bot.getLockNameForBot(string $lockName, string $lockPrefix = ''): string Возвращает имя блокировки по боту
bot.getLockNameForBusiness(string $lockName, string $lockPrefix = ''): string Возвращает имя блокировки по бизнесу
bot.waitForBusinessLock(string $lockName, string $lockPrefix = '', ?int $ttlSec = null, $maxWaitSec = 300): bool Возвращает блокировку по бизнесу
bot.waitForBotLock(string $lockName, string $lockPrefix = '', ?int $ttlSec = null, $maxWaitSec = 300): bool Возвращает блокировку по боту
bot.releaseAllCurrentLocks(): bool Удаляет все блокировки созданные в текущем скрипте
bot.releaseCurrentLockForBusiness(string $lockName, string $lockPrefix = ''): bool Удаляет блокировку созданную в текущем скрипте по бизнесу
bot.releaseCurrentLockForBot(string $lockName, string $lockPrefix = ''): bool Удаляет блокировку созданную в текущем скрипте по боту
bot.releaseLockForBusiness(string $lockName, string $lockPrefix = ''): bool Удаляет блокировку по бизнесу
bot.releaseLockForBot(string $lockName, string $lockPrefix = ''): bool Удаляет блокировку по боту
bot.hasLockForBusiness(string $lockName, string $lockPrefix = '', $checkValue = null): bool Проверяет существование блокировки по бизнесу
bot.hasLockLockForBot(string $lockName, string $lockPrefix = '', $checkValue = null): bool Проверяет существование блокировки по боту