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
3
860
Solid Ground
ElixirDaze 2017
Video available at
https://www.youtube.com/watch?v=5SbWapbXhKo
Saša Jurić
March 06, 2017
Tweet
Share
More Decks by Saša Jurić
See All by Saša Jurić
Such Great Heights, Code BEAM Lite, Amsterdam 2018
sasajuric
0
170
Simplifying systems with Elixir - Belgrade
sasajuric
3
440
Simplifying systems with Elixir
sasajuric
2
570
Metagrokking Elixir
sasajuric
4
290
Solid Ground
sasajuric
15
1.2k
Elixir - valentine edition
sasajuric
0
130
What's the fuss about Phoenix?
sasajuric
2
1.1k
Phoenix
sasajuric
1
210
Phoenix
sasajuric
0
120
Other Decks in Programming
See All in Programming
Storybookの情報をMCPサーバー化する
shota_tech
1
150
インプロセスQAにおいて大事にしていること / In-process QA Meetup
medley
0
140
LRパーサーはいいぞ
ydah
5
1.1k
Bedrock × Confluenceで簡単(?)社内RAG
iharuoru
1
110
KANNA Android の技術的課題と取り組み
watabee
0
200
RuboCop: Modularity and AST Insights
koic
2
2.6k
Flutterでllama.cppをつかってローカルLLMを試してみた
sakuraidayo
0
130
Laravel × Clean Architecture
bumptakayuki
PRO
0
150
파급효과: From AI to Android Development
l2hyunwoo
0
160
Jakarta EE Meets AI
ivargrimstad
0
830
The Implementations of Advanced LR Parser Algorithm
junk0612
2
1.4k
By the way Google Cloud Next 2025に行ってみてどうだった
ymd65536
0
120
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
780
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
560
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
830
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Docker and Python
trallard
44
3.4k
Embracing the Ebb and Flow
colly
85
4.7k
Typedesign – Prime Four
hannesfritz
41
2.6k
Designing for humans not robots
tammielis
253
25k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
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