Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. user=> (require '[manifold.deferred :as md] '[manifold.executor :as mex])
  2. nil
  3.  
  4. user=> (def tracing-exec (let [ex (mex/fixed-thread-executor 4)]
  5.                            (reify java.util.concurrent.Executor
  6.                              (execute [this task]
  7.                                (println "Executing:" task)
  8.                                (.execute ex task)))))
  9. #'boot.user/tracing-exec
  10.  
  11. ;; Без екзекутора, все работало на РЕПЛ треде
  12. boot.user=> (-> (md/future (Thread/sleep 1000) 0)
  13.                 (md/chain inc)
  14.                 (md/chain inc)
  15.                 (md/chain inc)
  16.                 (md/chain println))
  17. 3
  18.  
  19. ;; С onto, первый коллбек подхватил тред из екзекутора и этот же тред пошел
  20. ;; выполнять все остально
  21. boot.user=> (-> (md/future (Thread/sleep 1000) 0) (md/onto tracing-exec) (md/chain inc) (md/chain inc) (md/chain inc) (md/chain println))
  22. Executing: #object[manifold.deferred.Deferred$fn__7243$fn__7244 0x43fa4a9a manifold.deferred.Deferred$fn__7243$fn__7244@43fa4a9a]
  23. 3
  24.  
  25. ;; With-executor, каждый коллбек в чейне рескедюлиться на тот же экзекьютор
  26. boot.user=> (mex/with-executor tracing-exec (-> (md/future (Thread/sleep 1000) 0) (md/chain inc) (md/chain inc) (md/chain inc) (md/chain println)))
  27. Executing: #object[manifold.deferred.Deferred$fn__7243$fn__7244 0x11d701ca manifold.deferred.Deferred$fn__7243$fn__7244@11d701ca]
  28. Executing: #object[manifold.deferred.Deferred$fn__7243$fn__7244 0x27af4549 manifold.deferred.Deferred$fn__7243$fn__7244@27af4549]
  29. Executing: #object[manifold.deferred.Deferred$fn__7243$fn__7244 0x2968afcc manifold.deferred.Deferred$fn__7243$fn__7244@2968afcc]
  30. Executing: #object[manifold.deferred.Deferred$fn__7243$fn__7244 0x2d572e39 manifold.deferred.Deferred$fn__7243$fn__7244@2d572e39]
  31. 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement