LINUX.ORG.RU

История изменений

Исправление kovrik, (текущая версия) :

Суть в том, что операции зачисления/снятия бабла должны быть либо последовательны (неэффективно), либо атомарны (сложно сделать), либо синхронизованы должным образом.

Иначе, например:

На счете у юзера 100 баксов.
Поток 1 пытается снять 90 баксов.
Проверяет наличие средств - средства есть.
Поток 2 пытается снять 60 баксов.
Проверяет наличие средств - средства есть.
Поток 1 снимает бабло.
Поток 2 снимает бабло.

В итоге, юзер получает 150 баксов.

Исходная версия kovrik, :

Суть в том, что операции зачисления/снятия бабла должны быть либо последовательны, либо атомарны, либо синхронизованы должным образом.

Иначе, например:

На счете у юзера 100 баксов.
Поток 1 пытается снять 90 баксов.
Проверяет наличие средств - средства есть.
Поток 2 пытается снять 60 баксов.
Проверяет наличие средств - средства есть.
Поток 1 снимает бабло.
Поток 2 снимает бабло.

В итоге, юзер получает 150 баксов.