Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Effective Communication
Search
exupero
July 25, 2012
Technology
1
390
Effective Communication
A talk for the Detroit Lambda Lounge on CSP and Go.
exupero
July 25, 2012
Tweet
Share
More Decks by exupero
See All by exupero
Implementing the Elm Architecture in ClojureScript
exupero
1
390
Communicating Sequential Processes
exupero
0
410
Sketchnotes: Harnessing the Messy Mind
exupero
1
220
Scala
exupero
1
370
Io
exupero
1
120
Other Decks in Technology
See All in Technology
RAG/Agent開発のアップデートまとめ
taka0709
0
140
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
120
プロダクトマネージャーが押さえておくべき、ソフトウェア資産とAIエージェント投資効果 / pmconf2025
i35_267
2
580
Kubernetes Multi-tenancy: Principles and Practices for Large Scale Internal Platforms
hhiroshell
0
110
Oracle Technology Night #95 GoldenGate 26ai の実装に迫る1
oracle4engineer
PRO
0
150
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
440
生成AI・AIエージェント時代、データサイエンティストは何をする人なのか?そして、今学生であるあなたは何を学ぶべきか?
kuri8ive
2
2.1k
MapKitとオープンデータで実現する地図情報の拡張と可視化
zozotech
PRO
1
120
Lambdaの常識はどう変わる?!re:Invent 2025 before after
iwatatomoya
0
300
モバイルゲーム開発におけるエージェント技術活用への試行錯誤 ~開発効率化へのアプローチの紹介と未来に向けた展望~
qualiarts
0
660
Microsoft Agent 365 を 30 分でなんとなく理解する
skmkzyk
1
1k
Gemini でコードレビュー知見を見える化
zozotech
PRO
1
190
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Unsuck your backbone
ammeep
671
58k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
[SF Ruby Conf 2025] Rails X
palkan
0
490
Building Applications with DynamoDB
mza
96
6.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
How STYLIGHT went responsive
nonsquared
100
5.9k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Transcript
Effective Communication Or, Why Telepathy Might Not Be Such a
Good Idea Eric Shull (@exupero)
SHARING MEMORY THE PROBLEM:
SHARING MEMORY THE PROBLEM: NON-DETERMINISM
SHARING MEMORY THE PROBLEM: NON-DETERMINISM RACE CONDITIONS
SHARING MEMORY THE PROBLEM: NON-DETERMINISM RACE CONDITIONS DEADLOCKS
SHARING MEMORY THE PROBLEM: NON-DETERMINISM RACE CONDITIONS DEADLOCKS HARD TO
REPRODUCE
SHARING MEMORY THE PROBLEM: NON-DETERMINISM RACE CONDITIONS DEADLOCKS HARD TO
REPRODUCE HARD TO DEBUG
SHARING MEMORY THE PROBLEM: NON-DETERMINISM RACE CONDITIONS DEADLOCKS HARD TO
REPRODUCE HARD TO DEBUG HARD TO ENSURE RELIABILITY
MUTEXES & LOCKS SEMAPHORES COMPARE & SWAP ATOMIC OPERATIONS SYNCHRONIZATION
SOLUTIONS?
WRITE LOCK? WRITE UNLOCK. READ LOCK? FAIL! READ LOCK? DEADLOCK?
GOT IT! GOT IT! COMPLEX
LEAKY
NON-COMPOSABLE
WANTED SIMPLICITY ABSTRACTIONS COMPOSABILITY
WANTED SIMPLICITY ABSTRACTIONS COMPOSABILITY CONCURRENCY
PIPES
PIPESSIMPLE
PIPESSIMPLE COMPOSABLE
PIPESSIMPLE COMPOSABLE NON-LEAKY
PIPESSIMPLE COMPOSABLE NON-LEAKY PARALLEL
CSP COMMUNICATING SEQUENTIAL PROCESSES BY C.A.R. HOARE
PROCESSES
PROCESSES NO THREADS
PROCESSES NO THREADS NO SHARED MEMORY
PROCESSES “GOROUTINES” NO THREADS NO SHARED MEMORY
CHANNELS
CHANNELS COMMUNICATION
CHANNELS COMMUNICATION PASS DATA STRUCTURES
CHANNELS COMMUNICATION PASS DATA STRUCTURES VALUES AREN’T SHARED
ONE-TO-ONE
ONE-TO-MANY
MANY-TO-ONE
MANY-TO-MANY
SOUNDS LIKE ERLANG, EXCEPT... SYNCHRONY ...
SOUNDS LIKE ERLANG, EXCEPT... SYNCHRONY ... CHANNEL, NOT MAILBOX
CSPC.A.R. HOARE
CSPC.A.R. HOARE GO ROB PIKE KEN THOMPSON ROBERT GRIESEMER
CSPC.A.R. HOARE GO ROB PIKE KEN THOMPSON ROBERT GRIESEMER
CSPC.A.R. HOARE SQUEAKROB PIKE LUCA CARDELLI GO ROB PIKE KEN
THOMPSON ROBERT GRIESEMER
CSPC.A.R. HOARE NEWSQUEAK ROB PIKE SQUEAKROB PIKE LUCA CARDELLI GO
ROB PIKE KEN THOMPSON ROBERT GRIESEMER
CHANNELS FUNCTIONS OR GOROUTINES* FUNCTIONS OR GOROUTINES*
CHANNELS FUNCTIONS OR GOROUTINES* FUNCTIONS OR GOROUTINES* *GOROUTINES:
CHANNELS FUNCTIONS OR GOROUTINES* FUNCTIONS OR GOROUTINES* NOT THREADS *GOROUTINES:
CHANNELS FUNCTIONS OR GOROUTINES* FUNCTIONS OR GOROUTINES* NOT THREADS MORE
LIGHTWEIGHT *GOROUTINES:
CHANNELS FUNCTIONS OR GOROUTINES* FUNCTIONS OR GOROUTINES* NOT THREADS MIGHT
HAVE MILLIONS MORE LIGHTWEIGHT *GOROUTINES:
A SITE AGGREGATOR github.com/exupero/csp-demo
POLL SITES A SITE AGGREGATOR github.com/exupero/csp-demo
csp/poll-sites
None
None
POLL SITES A SITE AGGREGATOR
POLL SITES GET SOURCE A SITE AGGREGATOR
csp/queue-content
None
None
POLL SITES GET SOURCE A SITE AGGREGATOR
POLL SITES FILTER QUEUE GET SOURCE A SITE AGGREGATOR
csp/filter-queue
None
POLL SITES FILTER QUEUE GET SOURCE A SITE AGGREGATOR
POLL SITES FILTER QUEUE AGGREGATE MOOD GET SOURCE A SITE
AGGREGATOR
csp/aggregate
None
A SITE AGGREGATOR
A SITE AGGREGATOR SIMPLE EXAMPLE
A SITE AGGREGATOR SIMPLE EXAMPLE DEMONSTRATES GRAMMAR
A SITE AGGREGATOR SIMPLE EXAMPLE DEMONSTRATES GRAMMAR SHOWS COMPOSABILITY
CSP COMMUNICATING SEQUENTIAL PROCESSES
CSP COMMUNICATING SEQUENTIAL PROCESSES PLAY WITH IT UNDERSTAND IT USE
IT