Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
420
Sketchnotes: Harnessing the Messy Mind
exupero
1
220
Scala
exupero
1
370
Io
exupero
1
120
Other Decks in Technology
See All in Technology
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
320
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
210
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.3k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
Digitization部 紹介資料
sansan33
PRO
1
6.8k
MCPでつなぐElasticsearchとLLM - 深夜の障害対応を楽にしたい / Bridging Elasticsearch and LLMs with MCP
sashimimochi
0
150
今日から始めるAmazon Bedrock AgentCore
har1101
4
400
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
110
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
120
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
240
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
150
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
180
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
200
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Ruling the World: When Life Gets Gamed
codingconduct
0
140
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
77
Being A Developer After 40
akosma
91
590k
A Soul's Torment
seathinner
5
2.2k
Producing Creativity
orderedlist
PRO
348
40k
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