Бонусы. Разбор очередных ошибок.
Очередные уроки из серии 13-ти ошибок.
Рассмотрим еще 2 потенциальные ошибки, представленные в 4-х видео-уроках.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
Очень интересный урок про блокировки. Сам с этим недавно столкнулся, пришлось делать проверку на доступность перед записью… Тот механизм, что Вы описали, конечно намного универсальнее и проще. Но возникло два вопроса: чем автоматические блокировки отличаются от управляемых и зачем в конструкторе запроса есть галочка «Блокировать получаемые данные для последующего изменения»? Эта галочка как раз для автоматических блокировок?
Отличия автоматических от управляемых блокировок – в продвинутом курсе.
Опция “Блокировать данные для последующего изменения” имеет смысл только для автоматических блокировок. Она необходима для избежания deadlock.
А что такое deadlock?
По русски это взаимоблокировка. Когда два процесса мешают друг другу завершить транзакцию.
Если вы за рулем, то вспомните ситуацию, когда на перекрестке два потока поворачивающих машин мешают друг другу продолжить движение. Это оно самое :)
Понял, то есть это не то. Правильнее всего использовать объект “блокировка” для того, чтобы пользователи например не сделали два списания одновременно, так?
Избежать взаимоблокировки можно как на управляемых, так и на автоматических блокировках.
Но эффективнее использовать объект БлокировкаДанных, который накладывает управляемую блокировку.
В копилку :)
Благодарю! :)