Поясните нюанс использование агентов в akka

import scala.concurrent.ExecutionContext.Implicits.global
import akka.agent.Agent
import scala.concurrent.duration._
import scala.concurrent.stm._
def transfer(from: Agent[Int], to: Agent[Int], amount: Int): Boolean = {
atomic { txn =>
if (from.get < amount) false
else {
from send (_ - amount)
to send (_ + amount)
true
}
}
}
val from = Agent(100)
val to = Agent(20)
val ok = transfer(from, to, 50)
val fromValue = from.future
val toValue = to.future
Внимание вопрос: возможно ли не блокируя ограничить выполнение метода (допустим amount > 0 всегда) transfer до 0 в агенте from?
P.s. если провести transfer операцию много раза в ряд, вы получите отрицательное число в from и to во втором по итогу.
Пример взят отсюда: http://doc.akka.io/docs/akka/2.4.8/scala/agents.html#Deprecated_Transactional_Agents
09 сентября 2016 в 11:54
Ближайшие курсы

Контекстная реклама
Привлечение клиентов
4
марта

Как начать свой путь в разработке?
Онлайн-курс
4
марта

Веб-разработка для начинающих
Учимся делать сайт
4
марта
Новые статьи

Триггеры доверия на сайте: работающие элементы и принципы
15800

Как и почему стоит начать работать с Figma
18100

UI-дизайнер: подробно о профессии дизайнера интерфейсов
47800