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
360
Communicating Sequential Processes
exupero
0
290
Sketchnotes: Harnessing the Messy Mind
exupero
1
190
Scala
exupero
1
360
Io
exupero
1
110
Other Decks in Technology
See All in Technology
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
2
4.7k
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
360
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.7k
ServiceNow Knowledge Learning Rise up
manarobot
0
180
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
150
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
370
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
450
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM and Prompt Engineering and Building Tutors
ks91
PRO
0
250
KubeCon EU 2024 Recap “Kubernetes Policy Time Machine: Where to Next?”
ryysud
0
180
NgRx Signal Store
rainerhahnekamp
0
140
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
1
770
コンテナセキュリティの基本と脅威への対策
kyohmizu
3
740
Featured
See All Featured
Happy Clients
brianwarren
91
6.4k
Designing for Performance
lara
601
67k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
356
22k
The Language of Interfaces
destraynor
151
23k
Fantastic passwords and where to find them - at NoRuKo
philnash
36
2.5k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
YesSQL, Process and Tooling at Scale
rocio
163
13k
RailsConf 2023
tenderlove
2
530
It's Worth the Effort
3n
180
27k
Code Reviewing Like a Champion
maltzj
513
39k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
Producing Creativity
orderedlist
PRO
336
39k
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