Чтение исходного кода scala для scala.concurrent.Future и scala.concurrent.impl.Future, кажется, что каждая будущая композиция через map
отправляет новую задачу для исполнителя. Я предполагаю, что это обычно запускает контекстный переключатель для текущего потока и/или назначение потока для задания.Scala фьючерсы и потоки
Учитывая, что потоки функций должны проходить вокруг Фьючерсов между ними, чтобы воздействовать на результаты фьючерсов без блокировки (или без вникания в спагетти обратного вызова), разве эта «реактивная» парадигма очень дорога на практике, когда код хорошо написан модульным способом, где каждая функция только делает что-то маленькое и переходит к другим?
Yup it ... но он должен быть «реактивным» и не обязательно «оптимизированным по производительности». –
Подход, принятый стандартной библиотекой в этом отношении, является дизайнерским решением и контрастирует с реализацией фьючерсов на Twitter, которая оптимизирована для сходства потоков - см., Например, [это сообщение Finaglers] (https://groups.google.com/d/msg/finaglers/yWOr7-7CmPw/TBsJenqynQQJ) для обсуждения. –
Возможно, @TravisBrown будет вырезать/вставить это в поле «Ваш ответ». По модулю его стандарты невероятно высоки. Но его комментарий - более длинный, чем предыдущий. –