Я изучаю использование async/await в Scala. Я прочитал это в https://github.com/scala/async
Теоретически этот код является асинхронным (неблокирующим), но он не распараллелен:
def slowCalcFuture: Future[Int] = ...
def combined: Future[Int] = async {
await(slowCalcFuture) + await(slowCalcFuture)
}
val x: Int = Await.result(combined, 10.seconds)
тогда как этот другой распараллелен:
def combined: Future[Int] = async {
val future1 = slowCalcFuture
val future2 = slowCalcFuture
await(future1) + await(future2)
}
Единственная разница между ними заключается в использовании промежуточных переменных. Как это может повлиять на распараллеливание?