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
マルチスレッドプログラム
Search
Satoru Takeuchi
PRO
March 22, 2025
Technology
3
100
マルチスレッドプログラム
以下動画のテキストです
https://youtu.be/uxWQTdme1Sg
Satoru Takeuchi
PRO
March 22, 2025
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
97
waruiBPF
sat
PRO
0
94
eBPFとwaruiBPF
sat
PRO
4
3.1k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
89
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
180
様々なファイルシステム
sat
PRO
0
330
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
420
ソースを読むプロセスの例
sat
PRO
22
18k
メモリマップトファイル
sat
PRO
1
170
Other Decks in Technology
See All in Technology
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
2.5k
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.3k
日本の AI 開発と世界の潮流 / GenAI Development in Japan
hariby
1
500
AI with TiDD
shiraji
1
300
100以上の新規コネクタ提供を可能にしたアーキテクチャ
ooyukioo
0
260
[Neurogica] 採用ポジション/ Recruitment Position
neurogica
1
130
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
480
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4.5k
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
390
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
160
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
120
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
260
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
400
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
380
New Earth Scene 8
popppiees
0
1.2k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
31
The browser strikes back
jonoalderson
0
160
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Designing Powerful Visuals for Engaging Learning
tmiket
0
190
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Producing Creativity
orderedlist
PRO
348
40k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
Transcript
マルチスレッドプロセス Mar. 22nd, 2025 Satoru Takeuchi X: satoru_takeuchi 1
はじめに • システムに複数あるCPUコアを有効活用するにはシステム上で複数処理を並列実 行する必要がある ◦ 全く別のことをする処理を複数動かす (e.g. Webブラウザとコンパイラ ) ◦
ある処理を複数に分割して並列実行 (e.g. Webサーバのリクエストを並列で処理 ) • 後者を実現する方法が2つある ◦ マルチプロセス ▪ forkでプロセスを複数生成する ▪ 📝 過去動画 その84 プロセスの生成 fork編 ▪ 📝 過去動画 その86 プロセスの生成 コピーオンライトを使った fork編 ◦ マルチスレッド ▪ pthread_create関数でプロセスを複数生成する ▪ 本動画で説明 2
マルチスレッドスレッド • 1つのプロセス内の実行の流れを複数に分けるというイメージ ◦ スレッド間でページテーブルは共有、つまり全メモリ領域を共有 • あらゆるプロセスは実行開始開始時に1つスレッドが存在する ◦ このスレッドをメインスレッドと呼ぶ •
pthread_create()関数によってサブスレッドを作る ◦ 関数の引数としてサブスレッドに実行させたい関数を指定 3 int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void *), void *restrict arg);
おさらい: プロセスの生成 4 プロセスのメモリ 物理メモリ 1) fork()呼び出し プロセスのメモリ(*1) 物理メモリ 2-1)
親プロセスが fork()実行直後から 実行再開 2-2) 子プロセスが fork()実行直後から 実行開始 仮想アドレス空間 仮想アドレス空間 仮想アドレス空間 *1) コピーオンライトによって最初は共有 書き込むと共有解除
スレッドの生成 5 プロセスのメモリ 物理メモリ 1) pthread_create()呼び出し プロセスのメモリ 物理メモリ 2-1) 親スレッドがpthread_create()から
復帰して実行再開 2-2) 子スレッドが pthread_create()で 指定された関数を 実行 仮想アドレス空間 仮想アドレス空間
マルチスレッドプロセスの利点 • 生成時にページテーブルのコピーが不要なため、生成所要時間が短い • ほとんどのリソースをスレッド間で共有するのでリソース消費量が少ない • 全スレッドが同じメモリを読み書きできるので見かけ上協調動作しやすい ◦ 排他制御はもちろん必要 6
マルチスレッドプロセスの欠点 • 1つのスレッドの障害がプロセス全体の障害になりやすい ◦ 例: 1つのスレッドがNULLポインタ参照するとプロセス全体が異常終了する • マルチスレッドプログラミングのお作法を守るのが大変 ◦ 例:
マルチスレッドプログラムから呼び出してはいけない (thread-unsafe)関数がある ◦ 📝 Go言語のgoroutineのように、このようなお作法を意識せずマルチスレッドプログラムできるよう になっていることもある 7
まとめ • あるまとまった処理を並列実行したい場合マルチプロセス、マルチスレッドという方 法がある • どっちも一長一短あるので好きなほうを使えばいい ◦ 📝 どちらにするか選択できたり、両方使う場合もある (e.g.
Apache Webサーバ 8