Skip to content

Instantly share code, notes, and snippets.

@mping
Created January 29, 2018 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mping/2ea99f495782dfabc25f4cc290623769 to your computer and use it in GitHub Desktop.
Save mping/2ea99f495782dfabc25f4cc290623769 to your computer and use it in GitHub Desktop.
quasar producer
(ns clj-quasar.core
(:require
[co.paralleluniverse.pulsar
[core :refer :all]
[actors :refer :all]]))
(defsfn adder []
(receive [from v]
(do
(+ v 1))))
(defsfn producer []
(loop [state (rand)]
(println "state:" state)
(receive [from :send]
(let [a1 (spawn adder)
a2 (spawn adder)]
(! a1 @self state)
(! a2 @self state)
(recur (+ state
(+ (join a1) (join a2)))))
)))
(def p (spawn producer))
(def workder
(future (while true
(do
(! p @self :send)
(Thread/sleep 2000)
))))
(comment
(future-cancel worker))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment