1
0
mirror of https://github.com/janet-lang/janet synced 2024-07-02 01:53:15 +00:00
janet/examples/threads.janet

25 lines
502 B
Plaintext
Raw Normal View History

(defn worker-main
[parent]
2019-12-02 10:39:13 +00:00
(def name (:receive parent))
(def interval (:receive parent))
(for i 0 10
2019-12-02 10:39:13 +00:00
(os/sleep interval)
(printf "thread %s wakeup no. %d" name i))
2019-12-02 10:39:13 +00:00
(:send parent :done))
(defn make-worker
2019-12-02 10:39:13 +00:00
[name interval]
(-> (thread/new)
(:send worker-main)
(:send name)
(:send interval)))
2019-12-02 10:39:13 +00:00
(def bob (make-worker "bob" 0.2))
(def joe (make-worker "joe" 0.3))
(def sam (make-worker "sam" 0.5))
2019-12-02 10:39:13 +00:00
# Receive out of order
(:receive bob)
(:receive sam)
(:receive joe)