Tôi có hai hàm chi phí độc lập. Tôi muốn chạy chúng song song. Tôi không muốn đối phó với tương lai và như vậy (tôi mới đến Clojure và dễ dàng nhầm lẫn).Chết đơn giản Ngã ba tham gia đồng thời trong Clojure
Tôi đang tìm cách đơn giản để chạy đồng thời hai chức năng. Tôi muốn nó hoạt động như sau
(defn fn1 [input] ...) ; costly
(defn fn2 [input] ...) ; costly
(let [[out1 out2] (conc (fn1 x) (fn2 y))] ...)
Tôi muốn điều này trả về véc tơ với một cặp đầu ra. Nó chỉ nên trở lại khi cả hai luồng đã kết thúc. Lý tưởng nhất là conc nên làm việc cho bất kỳ số lượng đầu vào nào. Tôi nghi ngờ đây là một mô hình đơn giản.
Khi bạn nói rằng bạn không muốn đối phó với tương lai, điều đó có nghĩa là bạn không muốn tương lai được sử dụng trong hàm "conc"? Nó là thành ngữ để sử dụng một trong những nguyên tố đồng thời Clojure trong trường hợp, theo như tôi biết, mặc dù chúng có thể được ẩn khỏi bạn thông qua đóng gói trong "conc." – JohnJ
Chắc chắn một số nguyên thủy đồng thời sẽ được sử dụng. conc có thể phức tạp như bạn muốn. Tôi chỉ không muốn đối phó với họ như một người dùng. Tôi nghi ngờ điều này là "bắt đầu một tương lai cho mỗi đầu vào", "chờ đợi trên mỗi đầu ra", "trở lại". Có lẽ nó sẽ phải là một vĩ mô, không chắc chắn. – MRocklin
Chắc chắn là một macro nếu bạn muốn trì hoãn việc đánh giá các đối số để đồng nhất với các luồng. Tôi đang làm việc trên vĩ mô def'n bây giờ. – JohnJ