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
Channels & Concurrency: Go, Clojure, Erlang, Haskell
Search
Oleksii Kachaiev
August 03, 2013
Programming
9
4.4k
Channels & Concurrency: Go, Clojure, Erlang, Haskell
The idea, benefits, theory and practise.
Oleksii Kachaiev
August 03, 2013
Tweet
Share
More Decks by Oleksii Kachaiev
See All by Oleksii Kachaiev
Counting HTTP with QUIC & HTTP/3
kachayev
1
200
Talking SQL to Strangers
kachayev
3
440
Counting HTTP: 0.9...3
kachayev
1
57
Managing Data Chaos in The World of Microservices
kachayev
3
550
Deep HTTP Dive Through Aleph & Netty
kachayev
6
3.5k
Keep Your Data Safe With Refined Types
kachayev
4
1.3k
Clojure at Attendify (2nd ed)
kachayev
5
1.4k
Clojure at Attendify
kachayev
4
310
Finagle & Clojure
kachayev
6
1.2k
Other Decks in Programming
See All in Programming
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
540
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
Ruby Function Composition
bkuhlmann
1
330
使ってみよう Azure AI Document Intelligence
kosmosebi
2
320
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
190
What We Can Learn From OSS
inouehi
0
420
GitHub Copilotのススメ
marcy731
1
200
SIMD Parallel Programming with the Vector API
josepaumard
0
180
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
380
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
810
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
330
Featured
See All Featured
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Building Applications with DynamoDB
mza
88
5.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
78
43k
Making the Leap to Tech Lead
cromwellryan
124
8.5k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
Web Components: a chance to create the future
zenorocha
305
41k
Fireside Chat
paigeccino
21
2.6k
A designer walks into a library…
pauljervisheath
200
23k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Transcript
Channels & concurrency 2013 (c) Alexey Kachayev
Channels Idea
Idea •Hoare’s CSP •Erlang / Limbo / etc •Transport level
•File name / File descriptor •Message Box / Queue
Channels Go(lang)
Go
Go (1)
Go (2)
Go (2) fan-out fan-in timeout
Channels Clojure
Clojure Alexey Kachayev, https://gist.github.com/kachayev/3146759
Clojure
Clojure
Clojure
Clojure Michael Peterson, https://github.com/midpeter444/go-lightly
Clojure
Clojure core.async
Idea •Library (just) •(chan) •Blocking •Buffers •(go) macros •Deadlocks (?!?)
Clojure
Clojure
Channels dig deeper
Why? •Streams •Decoupling •Composability •Patterns
Channels Concurrent ML
CML
Channels Erlang & composability
Channels: Erlang https://gist.github.com/kachayev/5426175
Idea •map •filter •fork •zip, zipwith •take, drop •etc
Erlang
Erlang
Erlang
Erlang futures?
Erlang
Erlang
Channels Scala & Eventsourced
Scala
Scala channel
Channels Cloud Haskell & Types
Haskell
Haskell channel
Contacts twi: @kachayev github: @kachayev work: attendify.com