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
Solid Ground
Search
Saša Jurić
March 06, 2017
Programming
940
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Solid Ground
ElixirDaze 2017
Video available at
https://www.youtube.com/watch?v=5SbWapbXhKo
Saša Jurić
March 06, 2017
More Decks by Saša Jurić
See All by Saša Jurić
Such Great Heights, Code BEAM Lite, Amsterdam 2018
sasajuric
0
210
Simplifying systems with Elixir - Belgrade
sasajuric
3
490
Simplifying systems with Elixir
sasajuric
2
610
Metagrokking Elixir
sasajuric
4
330
Solid Ground
sasajuric
15
1.3k
Elixir - valentine edition
sasajuric
0
150
What's the fuss about Phoenix?
sasajuric
2
1.2k
Phoenix
sasajuric
1
270
Phoenix
sasajuric
0
160
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
560
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
470
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
170
What's New in Android 2026
veronikapj
0
260
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
370
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
250
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
yield再入門 #phpcon
o0h
PRO
0
1k
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
240
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
メールのエイリアス機能を履き違えない
isshinfunada
0
230
Featured
See All Featured
Technical Leadership for Architectural Decision Making
baasie
3
470
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
700
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Designing for Timeless Needs
cassininazir
1
440
Design in an AI World
tapps
1
280
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
480
Joys of Absence: A Defence of Solitary Play
codingconduct
1
430
Code Review Best Practice
trishagee
74
20k
BBQ
matthewcrist
89
10k
Transcript
Solid ground @sasajuric aircloak.com
None
long-running system many tasks soft real-time finite time program all-or-nothing
hard real-time
NIFs
scheduler scheduler scheduler scheduler BEAM CPU CPU CPU CPU
frequent context switches
t1 t2 t3 t4 t5 10 s 1 ms 1
ms 1 ms 1 ms
t1 t2 t3 t4 t5 t1 BEAM scheduler
t2 t3 t4 t5 t1 cooperative scheduler
thread 1 thread n … long running task long running
task blocked cooperative scheduler
thread 1 thread n … long running task long running
task not blocked :-) BEAM scheduler
activities as runtime citizens
send(pid, :please_stop)
mref = Process.monitor(pid) send(pid, :please_stop) receive do {:DOWN, ^mref, :process,
^pid, _reason} -> :ok end
mref = Process.monitor(pid) send(pid, :please_stop) receive do {:DOWN, ^mref, :process,
^pid, _reason} -> :ok after :timer.seconds(5) -> Process.exit(pid, :kill) receive do {:DOWN, ^mref, :process, ^pid, _reason} -> :ok end end
task = Task.async(fn -> ... end) case Task.yield(task, :timer.seconds(5)) do
{:ok, result} -> do_something(result) nil -> Task.shutdown(task, :brutal_kill) end
shared-nothing concurrency
Process heap resources
process-owned “stuff” is released
supervision tree
system backend frontend chat history repo cache endpoint
system backend chat history repo
supervisor foundations frequent context switching activities as runtime citizens observable
process termination stoppable processes shared-nothing concurrency
runtime guarantees syntax developer friendliness ecosystem
Image credit Scales of Justice