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
POSIX Threads
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
HORINOUCHI Masato
October 06, 2015
Technology
0
56
POSIX Threads
社内LT大会 0x64物語 #01 Parallel / Concurrent 資料
HORINOUCHI Masato
October 06, 2015
Tweet
Share
More Decks by HORINOUCHI Masato
See All by HORINOUCHI Masato
balenaCloud
thermes
0
76
Church Numerals
thermes
0
49
CPS & CTO
thermes
0
250
FM synthesis
thermes
0
37
A440
thermes
0
61
Inside mml2wav.rb
thermes
0
86
Scheme Interpreter in Ruby
thermes
0
70
Clock / Timer
thermes
0
160
Hash Tree
thermes
0
75
Other Decks in Technology
See All in Technology
Zeal of the Convert: Taming Shai-Hulud with AI
ramimac
0
160
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
310
[2] Power BI Deep Dive [2026-03]
ohata_bi
0
100
A Casual Introduction to RISC-V
omasanori
0
470
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
PRO
0
230
Windows ファイル共有(SMB)を再確認する
murachiakira
PRO
0
200
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
330
WebアクセシビリティをCI/CDで担保する ― axe DevTools × Playwright C#実践ガイド
tomokusaba
2
190
AlloyDB 奮闘記
hatappi
0
170
めちゃくちゃ開発するQAエンジニアになって感じたメリットとこれからの課題感
ryuhei0000yamamoto
0
180
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
250
進化するBits AI SREと私と組織
nulabinc
PRO
1
260
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
140
Done Done
chrislema
186
16k
Optimizing for Happiness
mojombo
378
71k
Mind Mapping
helmedeiros
PRO
1
130
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.4k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
150
Building Adaptive Systems
keathley
44
3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
230
The SEO identity crisis: Don't let AI make you average
varn
0
420
Transcript
POSIX Threads 2015/10/06 0x64 Tales #01 Parallel / Concurrent Livesense
Inc. HORINOUCHI Masato
pthread ͬͯͳʹ? (1) • ਖ਼໊ࣜশ POSIX Threads Ͱɺͦͷ໊ͷ௨Γ POSIX ඪ४ͷඇಉ
ظॲཧ(thread)ͷ API ܈ɻ • ༷ IEEE Std 1003.1c-1995 Ͱఆ͍ٛͯ͠Δɻ • API ܈ͳͷͰ༻͢ΔݴޠΘͳ͍ɻ • جຊతʹ Cݴޠ͚ͷϥΠϒϥϦʔΛ֤ݴޠʹҠ২ɻ
pthread ͬͯͳʹ? (2) • ͋͘·Ͱ API Λنఆ͍ͯ͠Δ͚ͩͳͷͰɺͲͷΑ͏ͳ࣮͔ OS (ਖ਼֬ʹ Kernel
ͱ Library) ʹΑΔɻ • POSIX४ڌͷγεςϜͰ͋Ε༻Ͱ͖ΔͷͪΖΜɺ Win32 ࣮͋ͬͨΓ͢Δɻ • ͨͩ͠ 3rd party (ݱঢ় RedHat)ɻ
Linux ͷεϨου • ͱ͜ΖͰ "Linux kernel ͷεϨουͬͯ݁ہϓϩηε" ͬͯ Λฉ͍ͨ͜ͱͳ͍Ͱ͔͢Ͷɻ •
ࠓճ͜ͷΛ؆୯ʹઆ໌͢Δ͜ͱʹ͠·͢ɻ
pthread σϞ • ৯ࣄ͢Δֶऀͷ Λ͍ͯΈΑ͏ɻ • source Sun Studio
12 ͷϖʔδ ͔Β͖࣋ͬͯ·ͨ͠ɻ • din_philo.c σουϩοΫͷՄೳੑ͋Γɻ • din_philo_fix1.c τʔΫϯ (ηϚϑΥ) Λ༻͍ͯσου ϩοΫΛղܾ͍ͯ͠Δɻ
ps -Lf UID PID PPID LWP C NLWP STIME TTY
TIME CMD horinou+ 21135 1804 21135 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21136 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21137 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21138 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21139 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21140 0 6 16:51 pts/1 00:00:00 ./din_philo • PID (process ID) ͕ಉҰͰ LWP (thread ID) ͕ҧ͏εϨουΛ 5 ͭੜͰ͖ͨɻ
Linux ͷ pthreads ࣮ • Ϟμϯͳ Linux + glibc Ͱ
Na/ve POSIX Threads Library (NPTL) ͕༻͍ΒΕΔɻ • ॳظͷ Linux 2.6 Ͱ LinuxThreads ͕༻͍ΒΕ͍ͯͨɻ • ΑΓલϢʔβʔϥϯυͰ࣮͍ͯͨ͠ (໊শෆ໌)ɻ • Lightweight Process (LWP) Λ༻࣮͍ͯͯ͠͠Δɻ • LWP ෳͷ LWPಉ࢜ͰϦιʔεΛڞ༗͢Δ͜ͱ͕Մೳɻ
NPTL • LWP ͱεϨου͕ 1:1 ͷ࣮ɺ͍ΘΏΔ 1:1 ϞσϧΛ࠾༻ɻ • ͦΕͧΕͷεϨου͕
Kernel εέδϡʔϧ࣮ମʹ 1:1 Ϛοϐ ϯάͱͳΔɻ • ϓϩηεεϨου (LWP) task_struct ߏମͰཧ͠ɺ ϓϩηεεέδϡʔϦϯάಉҰͷΩϡʔͰߦͳ͏ɻ • ཁ͢ΔʹϓϩηεͱεϨουͷҧ͍΄ͱΜͱͳ͍ɻ
ϓϩηεͱεϨουͷϝϞϦཧ • ϓϩηε • fork ࣌ʹ৽͘͠ԾΞυϨεۭؒΛੜ͠ͷϝϞϦΛࢠʹ ίϐʔɻ • εϨου •
ෳͷεϨου͕ 1ͭͷԾΞυϨεۭؒΛڞ༗ɻ
ϓϩηεͷԾΞυϨεۭؒ ϚϧνεϨουͷίϯςΩετΓସ͑ʹ͏ίετ ͔ΒҾ༻ɻ
εϨουͷԾΞυϨεۭؒ ϚϧνεϨουͷίϯςΩετΓସ͑ʹ͏ίετ ͔ΒҾ༻ɻ
NPTL ͷར • kernel ͔ΒεϨουϓϩηε(1:1Ϟσϧ)ͱͯ͠ѻ͑Δͷ Ͱ… • 1ͭͷϓϩηεεέδϡʔϥʔ͚ͩͰཧ͢ΔͷͰγϯϓ ϧɻ •
SMP γεςϜͰෳͷίΞͰεϨουͷฒྻॲཧΛ͢Δͷ ͕؆୯ɻ
Linux Ҏ֎ͩͱ • ͪͳΈʹ Linux Ҏ֎ͷ POSIX γεςϜ M:N Ϟσϧ࠾༻ྫ͕
ଟ͍ɻ • FreeBSD • Kernel Scheduler En;;es (KSE) • Solaris • Solaris Lightweight Process (LWP)
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠