Qconn

Core.async - Communicating Sequential Processes using Channels, in Clojure

Core.async - Communicating Sequential Processes using Channels, in Clojure

Location: 
Bayview A/B
Time: 
Monday, 11:45am - 12:35pm
Abstract: 

There comes a time in all good programs when components or subsystems must stop communicating directly with one another. This is often achieved via the introduction of queues between the producers of data and the consumers/processors of that data. This architectural indirection ensures that important decisions can be made with some degree of independence, and leads to systems that are easier to understand, manage, monitor and change, and make better use of computational resources, etc.   The objectives of core.async are:  

  • To provide facilities for independent threads of activity, communicating via queue-like channels.
  • To support both real threads and shared use of thread pools (in any combination), as well as ClojureScript on JS engines.
  • To build upon the work done on CSP and its derivatives, e.g. Java CSP and the Go programming language.

  This talk will cover the motivation, design and use of the new Clojure core.async library, the reasons for choosing the CSP approach and how it helps to structure applications.