Chapter 01無料公開

まえがき

はじめに

プログラミング言語C++におけるマルチスレッド・サポートは2011年に改定された国際標準規格ISO/IEC 14882:2011(通称C++11)から始まり、2014年/2017年/2020年の規格改定(それぞれC++14/C++17/C++20)を経て数多くのマルチスレッド関連機能が追加されました。

この本では、C++標準ライブラリが提供する主要なマルチスレッド関連機能を説明していきます。C++11~C++20標準ライブラリのバージョン範囲を対象とするため、標準ヘッダやクラス/関数がどのC++バージョンから利用可能かを角括弧で表記します(例:C++20以降で利用可能な機能には[C++20]と記載)。バージョン表記のない機能はC++11から利用できます。

おことわり

この本の読者は、マルチスレッド・プログラミングに関する基礎知識を持っていることを前提にします。C++標準ライブラリの提供機能紹介にフォーカスするため、マルチスレッド処理それ自体の概念説明、並列並行処理の設計論やデバッグ手法に関する解説は行いません。

この本はC++標準ライブラリのリファレンスではなく、各機能の詳細仕様までは説明しません。主要機能別にセクションを分けて、概要説明と動作サンプルコードを記載します。C++メモリモデル(Memory Model)などの高度なトピックや、特殊な状況でのみ利用される機能は簡単な紹介にとどめます。

特に注意が必要とされる事項や詳細な補足説明は、このようなコメント欄にて記載します。

また文書中での表記を簡素化するため、クラステンプレートや関数テンプレートで定義される機能も単にクラスや関数と記述します。同様にサンプルコード冒頭ではusing namespace std;を宣言し、個別のstd::修飾を省略します。

カバー画像について

カバー画像背景はカラフルな「糸(いと)」の写真です。コンピュータプログラミングの文脈ではスレッド(Thread)は「プログラムで並行・並列処理を実現するための仕組み」と解釈されますが、英単語"Thread"の本来の意味は「1本の糸」です。コンピュータがシングルスレッド・プログラムを逐次実行するとき、一連の命令列が実行されていく経路は1本の糸にたとえられます。マルチスレッド・プログラムではこの実行経路が同時に複数存在するため、字義通り「マルチ(複数の)スレッド」となるのです。

帰属表示:Fashion photo created by Racool_studio - www.freepik.com