Неделю назад я задал аналогичный вопрос (Link), где я узнал, что ленивый характер карты делает следующий код последовательным.Понимание взаимодействия между фьючерсами и lazy-seq
(defn future-range
[coll-size num-futures f]
(let [step (/ coll-size num-futures)
parts (partition step (range coll-size))
futures (map #(future (f %)) parts)] ;Yeah I tried doall around here...
(mapcat deref futures)))
Это имело смысл. Но как я могу это исправить? Я пробовал делать почти все (: D), другой подход с обещаниями и многое другое. Он просто не хочет работать. Зачем? Мне кажется, что фьючерсы не начинаются до тех пор, пока mapcat не сделает их (я сделал несколько тестов с Thread/sleep). Но когда я полностью понимаю последовательность с doall, не следует ли фьючерсы начинать сразу в другом потоке?