O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Communicating Sequential Processes with core.async

Video Description

In this Communicating Sequential Processes with core.async training course, expert author Timothy Baldridge will teach you the basics of core.async. This course is designed for users that already have a working knowledge of Clojure and ClojureScript.

You will start by learning how to create channels, then jump into creating and using threads. From there, Timothy will teach you how to combine and split channel streams, work with transducers, and the pipeline abstraction. This video tutorial also provides a quick tour of core.async internals, including how channels are modeled, how alt handlers interact with channels, and how threads interface with channels. Finally, you will learn about non-blocking channel operations and how to put it all together.

Once you have completed this computer based training course, you will be fully capable of writing your own applications that take advantage of the core.async library.

Table of Contents

  1. Introduction
    1. What To Expect 00:01:23
    2. About The Author 00:00:38
    3. How To Use Your Working Files 00:01:15
  2. Channels
    1. Creating Channels 00:03:10
    2. Async Operations On Channels 00:01:45
    3. Buffers 00:04:41
    4. Closing Channels 00:03:10
  3. Threads
    1. Creating And Using JVM Threads 00:03:05
    2. Creating And Using Lightweight Threads 00:05:26
  4. Practical Application Of core.async Basics
    1. Interfacing With A HTTP Client 00:02:51
    2. Interfacing With A DB Client 00:05:39
    3. Interfacing With Blocking I/O 00:02:14
  5. Backpressure
    1. Introduction To Backpressure 00:03:23
    2. Tuning Backpressure 00:06:19
    3. Backpressure Pitfalls 00:03:24
  6. Choosing Channels With alts!
    1. Introduction To alts! And alt! 00:06:22
    2. alt! Defaults 00:01:54
    3. Channel Priority With alts 00:02:29
  7. Combining And Splitting Channel Streams
    1. Overview Of The Merge Function 00:02:30
    2. Overview Of mult And tap 00:02:12
    3. Overview Of pub/sub 00:03:36
    4. Draining Channels With reduce And into 00:02:34
  8. A Short Introduction To Transducers
    1. The Problem With Reducer Functions 00:05:07
    2. The Three Parts Of Transducer Functions 00:03:57
    3. Adding Transducer Logic To Channels 00:03:18
  9. The Pipeline Abstraction
    1. Pipeline And Pipeline-Blocking Overview 00:03:32
    2. Pipeline-Async Overview 00:03:45
    3. Parallel Workflows With Transducers And Pipelines 00:03:26
  10. A Quick Tour Of core.async Internals
    1. How Channels Are Modeled 00:08:26
    2. How alt Handlers Interact With Channels 00:06:19
    3. How Go Blocks Interface With Channels 00:04:38
    4. How Threads Interface With Channels 00:02:35
  11. Non-Blocking Channel Operations
    1. An Overview Of offer! And poll! 00:02:39
  12. Putting It All Together
    1. Implementing A Component Based Dataflow Engine 00:01:39
    2. Creating HTTP And Image Processing Components 00:07:09
    3. Wiring It All Together Into A Fully Parallel Asynchronous Data Processing Engine 00:03:33
  13. Wrap Up
    1. Wrap Up And Thank You 00:00:25