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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
MCPでつなぐElasticsearchとLLM - 深夜の障害対応を楽にしたい / Bridging Elasticsearch and LLMs with MCP
sashimimochi
0
150
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
190
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
210
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
110
20260204_Midosuji_Tech
takuyay0ne
1
140
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
300
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
220
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.3k
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
160
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Designing for Timeless Needs
cassininazir
0
130
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
How STYLIGHT went responsive
nonsquared
100
6k
Exploring anti-patterns in Rails
aemeredith
2
250
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
GitHub's CSS Performance
jonrohan
1032
470k
A Soul's Torment
seathinner
5
2.2k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
57
Scaling GitHub
holman
464
140k
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)
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠