並行プログラミング入門
https://scrapbox.io/files/6441511ab6d0d5001b87e79f.png?type=thumbnail
並行プログラミングの基礎的なアルゴリズムと実装方法について解説!
複数のプログラムを並列に実行する「並行プログラミング」は、処理速度を飛躍的に向上させる昔からある手法ですが、タスク管理、プロセス管理、スレッド管理をはじめ、複雑なしくみについての幅広い知識とテクニックが必要となります。本書はRustとCを使い、CPUのアトミック命令、グリーンスレッド、アクターモデル、ソフトウェア・トランザクショナルメモリ、async/awaitなど、並行プログラミングに関する理論的な背景から実装までを網羅的に扱います。ソースコードはGithub上で公開、実際に動作するソースコードを参考にしながら読み進められます。
出版社:オライリー・ジャパン
大学図書館リンク
1章 並行性と並列性
1.1 プロセス
1.2 並行性
1.3 並列性
1.3.1 タスク並列性
1.3.2 データ並列性
1.3.2.1 応答速度とスループット
1.3.2.2 アムダールの法則
1.3.3 インストラクションレベル並列性
1.4 並行と並列処理の必要性
1.4.1 並列処理と性能向上
1.4.2 並行処理の必要性と計算パス数爆発
2章 プログラミングの基本
2.1 アセンブリ言語
2.1.1 アセンブリ言語の基本
2.1.2 x86-64アセンブリの基本
2.2 C言語_(並行プログラミング入門)
2.2.1 Pthreads
2.2.2 volatile修飾子  
2.2.3 スタックメモリとヒープメモリ
2.3 Rust言語
2.3.1 型システム
2.3.1.1 基本的な型(Rust)
2.3.1.2 ユーザ定義型(Rust)
2.3.1.3 ジェネリクス(Rust)
2.3.1.4 参照型(Rust)
2.3.2 基本的な文法(Rust)
2.3.2.1 let文
2.3.2.2 関数定義と呼び出し
2.3.2.3 if式
2.3.2.4 match式
2.3.2.5 for文
2.3.2.6 loop文
2.3.2.7 参照の取得と参照外し(Rust)
2.3.2.8 関数ポインタ(Rust)
2.3.2.9 クロージャ(Rust)
2.3.3 所有権(Rust)
2.3.4 ライフタイム(Rust)
2.3.5 借用(Rust)
2.3.6 メソッド定義
2.3.7 トレイト(Rust)
2.3.8 ?演算子とunwrap(Rust)
2.3.9 スレッド(Rust)
3章 同期処理1
3.1 レースコンディション
3.2 アトミック処理
3.2.1 Compare and Swap(CAS)
3.2.2 Test and Set(TAS)
3.2.3 Load-Link/Store-Conditional
4章 並行プログラミング特有のバグと問題点
5章 非同期プログラミング
6章 マルチタスク
7章 同期処理2
8章 並行計算モデル
t6o_o6t.icon
結構低レベルまで掘り下げるんだ
Compare and Swap(CAS)を見てびっくり
読みたい
#C言語 #本