এই স্নিপেট যখন
(dorun
(map deref
(map #(future
(println % (Thread/currentThread)))
(range 10))))
বিভিন্ন থ্রেড দেখাচ্ছে 10 আন্তঃব্যক্ত রেখা মুদ্রণ:
0 #object[java.lang.Thread 0x5f1b4a83 Thread[clojure-agent-send-off-pool-26,5,main]]
2 #object[java.lang.Thread 1 0x79dfba1f #object[Thread[clojure-agent-send-off-pool-28,5,main]java.lang.Thread]
3 4 #object[java.lang.Thread #object[java.lang.Thread 0x7ef7224f Thread[clojure-agent-send-off-pool-27,5,main]0x5f1b4a83 ]Thread[clojure-agent-send-off-pool-26,5,main]]
5
67 #object[java.lang.Thread #object[0x79dfba1f java.lang.Thread Thread[clojure-agent-send-off-pool-28,5,main]]0x77526645
8 #object[java.lang.Thread #object[java.lang.ThreadThread[clojure-agent-send-off-pool-29,5,main] ]9 #object[java.lang.Thread 0xc143aa5 0x7ef7224f Thread[clojure-agent-send-off-pool-31,5,main]]Thread[clojure-agent-send-off-pool-27,5,main]]
0x1ce8675f 0x379ae862 Thread[clojure-agent-send-off-pool-30,5,main]Thread[clojure-agent-send-off-pool-32,5,main]]]
আমি যেমনটি আশা করব, নিম্নলিখিত স্নিপেট:
(dorun
(map deref
(map #(future
(println % (Thread/currentThread)))
(repeatedly 10 #(identity 42)))))
একই থ্রেডের সাথে 10 টি সুস্পষ্টভাবে সারিবদ্ধ স্ট্রিং উত্পাদন করে:
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
42 #object[java.lang.Thread 0x1e1b7ffb Thread[clojure-agent-send-off-pool-39,5,main]]
যা স্পষ্টভাবে ইঙ্গিত দেয় যে ফিউচারগুলি সমান্তরালভাবে চালিত হয় না, তবে প্রতিটি একই থ্রেডে থাকে।
এটি কেবল তখনই ঘটে repeatedly
, যদি আমি doall
প্রথমটির সাথে ক্রমটি উপলব্ধি করি তবে ভেক্টর, range
গুলি বা অন্যান্য সিকোয়েন্সগুলি সমস্ত ফলাফল সমান্তরাল কার্যকর হয়।
ভবিষ্যতে কেন repeatedly
ব্যবহৃত হয় যখন একই থ্রেডে প্রেরণ করা হয়?
ধন্যবাদ!