PR:この記事にはアフィリエイトリンクが含まれます。
C言語の並行処理は、pthread_createのような関数を知るところから始まります。共有データに複数のスレッドが同時に触れるとどうなるか、処理の順序をどう同期するかまで分かると、実装の判断がしやすくなります。
pthreadの本は、APIに絞ったものからLinuxやUNIXのシステムプログラミング、C言語全般を扱うものまであります。読む章によって学べる範囲も変わりますよね。
紹介する5冊は、POSIX APIとしてpthreadを解説する本と、C11の標準スレッド機能を扱う本に分かれます。両者は別のAPIなので、関数や規格の前提を混同しないように読んでください。
先に一覧
| 本 | 主な軸 | スレッド関連の内容 |
|---|---|---|
System Programming in Linux: A Hands-On Introduction | Linuxのシステムプログラミング | pthreadの作成・終了・同期、演習 |
The Linux Programming Interface | Linux・UNIX APIのハンドブック | スレッド関連が第29〜33章、200超の例題 |
Modern C Programming | C99〜C23の言語機能 | C11のスレッド、mutex、atomic data |
Advanced Programming in the UNIX Environment | UNIXとLinuxのシステムプログラミング | Threads、Thread Control、同期機構 |
C in a Nutshell | C言語と標準ライブラリのリファレンス | C11 threads、mutex、atomic、メモリ順序 |
LinuxやUNIXを軸にする3冊はpthreadをPOSIX APIとして扱います。C規格を扱う2冊は標準スレッド機能を取り上げるため、mutexなど共通する語が出ても、関数名や前提まで同じとは限りません。
価格は、米国の公式定価または掲載リスト価格が示されている本ではその額を目安にしました。実売価格は時期や店で変わり、日本円では為替や送料の影響も受けるので、購入時に販売店の表示を確かめてください。
ページ数は391ページから1,552ページまで開きがあります。Cの標準機能を中心にした本は比較的短く、システムプログラミング全般を扱う本は千ページを超えます。pthread以外に読みたい範囲も、必要な分量を考える材料です。
pthreadの役割
pthreadはPOSIXが定めるスレッドAPIで、LinuxなどのPOSIX環境からC言語でスレッドを作成・管理するときに使います。pthread_createで新しいスレッドを作り、pthread_joinで終了を待つ流れが基本です。
スレッドは同じプロセスのメモリ空間を共有します。別々のスレッドから同じ変数へ書き込める半面、更新が重なれば値が壊れることもあります。実行順序まで考える必要があるんですね。
C11にも<threads.h>を使う標準スレッドAPIがあります。pthreadとは別のAPIなので、共通する考え方があってもコードをそのまま置き換えられるとは限りません。
本を読む際は関数の使い方に加えて、共有データ、同期、終了処理の関係を追うと理解しやすくなります。pthreadを使う目的も明確になります。
同期で止まる理由
共有カウンターを複数のスレッドが同時に1増やすと、読み取りと書き込みが重なり、片方の更新が消えることがあります。データ競合の例です。Cでは、適切な同期のない競合アクセスが未定義動作につながる場合もあります。
mutexは、共有データを変更する区間へ一度に一つのスレッドだけを通す仕組みです。関数呼び出しごとにロックするだけでは不十分で、データ全体に対する不変条件をどの区間で守るかを考えます。
条件変数は、条件が成立するまで待つ処理に使います。通知を受けた後も条件を確認するループが必要です。mutexとの役割の差を理解すると、同期処理を組み立てやすくなります。
キャンセルやスレッド終了時にも後始末が要ります。ロックを保持したまま処理を抜けない設計が必要です。同期の正しさに加え、待ち合わせや性能への影響まで解説する本なら、実装時の検討事項を広げられます。
Linux実践書
Stewart N. Weiss著の『System Programming in Linux: A Hands-On Introduction』は、No Starch Pressから刊行されたハードカバーです。発行は2025年9月で、全1,048ページ。Linuxのシステムプログラミングを軸に演習を進めます。
第15章はpthreadライブラリを扱い、スレッドの作成から終了、結合、キャンセルまでを解説します。第16章ではmutexや条件変数に加え、バリアと読み書きロックも扱います。同期の正しさや性能への考慮もあります。
第15章と第16章には演習があります。出版社は実践プロジェクトとソースコードも案内しています。Linux上でpthreadの流れを手を動かして学ぶ人におすすめです。
参考価格は公式希望小売価格の99.99米ドルで、実売額は販売店や時期によって変わります。
定番ハンドブック
Michael Kerrisk著の『The Linux Programming Interface: A Linux and UNIX System Programming Handbook』は2010年刊行、全1,552ページのハンドブックです。LinuxとUNIXのシステムAPIを幅広く収録し、POSIX規格とLinux固有機能を扱います。
スレッド関連は第29章から第33章までを占めています。第30章が同期、第32章がキャンセルの章です。200を超えるサンプルプログラムに加え、選択演習の解答も付録に掲載されています。
システムコールやプロセス管理も知りたい読者におすすめの参照書です。初めての一冊として通読するには分量が多く、必要な章を調べる使い方が現実的でしょう。参考価格は公式希望小売価格の99.99米ドルです。
C規格の解説
Orhan Gazi著の『Modern C Programming: Including Standards C99, C11, C17, C23』は、2024年刊行のソフトカバー版です。全391ページでC99からC23までの規格を扱い、Cの知識を更新したい読者を主な対象としています。
第16章「Threads」は313〜341ページで、スレッド生成、mutexのロックと解除、競合状態を取り上げます。第17章ではatomic data typesを扱い、スレッド関連機能とのつながりも確認できます。
この本の中心はC言語の標準機能で、POSIX pthread APIを専門に解説する構成とは異なります。C11のスレッドやatomicを含め、規格を学びたい人に合います。ソフトカバー版の参考価格は掲載リスト価格109.99米ドルです。
UNIXの基礎体力
W. Richard StevensとStephen A. Rago著の『Advanced Programming in the UNIX Environment, 3rd Edition』は2013年刊行のペーパーバックです。全1,032ページで、CによるUNIXおよびLinuxのシステムプログラミングを扱います。
第11章「Threads」と第12章「Thread Control」があります。同期やキャンセルオプションを扱い、POSIXのスピンロック、バリア、セマフォも掲載しています。
例やケーススタディがあり、ダウンロード可能なコードも付いています。pthreadをUNIXのAPIやプログラム設計と結びつけて学びたい人におすすめです。
参考価格はリスト価格69.99米ドルで、実売額は時期や販売店により変わります。
C全体を引く本
Peter Prinz、Tony Crawford著の『C in a Nutshell, 2nd Edition: The Definitive Reference』は全821ページのC言語リファレンスです。中級から上級者向けで、C11を含むC言語と標準ライブラリを調べられます。
第14章「Multithreading」ではスレッド生成や共有データに触れ、mutex、atomic、メモリ順序、条件変数も扱います。スレッドローカルオブジェクトとスレッド固有記憶域も解説範囲です。
C言語全体を引ける本の中に、C11のスレッド機能やatomicがまとまっています。pthreadの基礎を学んだ人が、標準ライブラリや言語仕様を調べるときにおすすめです。
結論
Linux上でpthreadを実装しながら学びたい人には、『System Programming in Linux』をおすすめします。第15章と第16章ではスレッドの作成から同期まで扱い、演習も用意されています。キャンセルや終了の処理も学べます。
Linux・UNIX APIを幅広く調べたい読者には『The Linux Programming Interface』、UNIXのスレッド制御とシステムプログラミングを学びたい人には『Advanced Programming in the UNIX Environment』がおすすめです。どちらもページ数が多いため、必要な章を中心に読むと進めやすいでしょう。
C11以降の標準スレッドを知るなら『Modern C Programming』、C言語全般のリファレンスも探すなら『C in a Nutshell』が合います。pthreadとC11 threadsのAPIを分けて捉えれば、どの本の章から読むか決めやすくなります。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。






