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
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
74
Church Numerals
thermes
0
47
CPS & CTO
thermes
0
250
FM synthesis
thermes
0
36
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
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
1
120
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
2
310
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
130
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
0
330
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.7k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
73k
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
490
What happened to RubyGems and what can we learn?
mikemcquaid
0
250
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
1
400
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
The Spectacular Lies of Maps
axbom
PRO
1
520
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
110
AI: The stuff that nobody shows you
jnunemaker
PRO
2
240
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
820
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
690
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Crafting Experiences
bethany
1
48
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
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)
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠