Clojure Applied: From Practice to Practitioner by Ben Vandgrift & Alex Miller

Clojure Applied: From Practice to Practitioner by Ben Vandgrift & Alex Miller

Author:Ben Vandgrift & Alex Miller [Vandgrift, Ben]
Language: eng
Format: epub
Tags: Pragmatic Bookshelf
ISBN: 9781680500745
Publisher: Pragmatic Bookshelf
Published: 2015-08-26T22:00:00+00:00


(defn go-print

"Pull messages from channel c and print them."

[c]

(go

(loop []

(when-some [val (<! c)]

(println "Received a message:" val)

(recur)))))

In this example, the go block runs as a lightweight process. When it reaches a channel operation (such as <! or >!), if the channel operation can be performed, execution continues. If the channel operation can’t continue, the go block is parked. A parked go block doesn’t consume a thread; it’s effectively a suspended computation waiting for data. When the channel operation can proceed, the go block wakes up for continued execution.

Go blocks are a great tool for breaking up a program into potentially concurrent processes. One use case that core.async supports particularly well with go blocks and channels is building pipelines of data transformation stages.



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.