Банки решают эту проблему путем «удержания» средств и отслеживания двух отдельных балансов: текущего баланса (все деньги на счете) и доступного баланса (который является текущим балансом за вычетом суммы всех«держит» все неоплаченные средства).
Допустим, у вас есть баланс в 10 долларов, а стоимость звонков - 1 доллар в минуту.
Идея состоит в том, что ваш первый 10-минутный звонок не будетна самом деле вычесть средства до того, как это будет сделано, но там будет сказано: «Эй, мне понадобится 10 долларов из текущего баланса».Деньги, как вы сказали, на самом деле забираются только тогда, когда вызов отключен.
Однако, поскольку «удержание» этих 10 долларов уже установлено, когда второй вызов настроен, он проверяет баланси говорит: «Эй, мне понадобятся 10 долларов», но алгоритм возьмет общее сальдо (10 долларов) и вычтет сумму всех «удерживающих» сумм (10 долларов) и вернет 0 долларов.
Итак, в основном, второй вызов не будет настроен, потому что ваш алгоритм баланса скажет: «Да, у вас есть 10 долларов на вашем счете, но вы в настоящее время зарезервировали 10 долларов, оставив при этом« 0 доступного баланса ». ПоэтомуЯ не могу зарезервировать время для вашего звонка, если вы не отмените свой первый звонок или не добавите больше денег на свой баланс. "