Skip to Main Content
並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ
book

並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ

by 高野 祐輝
August 2021
Intermediate to advanced content levelIntermediate to advanced
384 pages
5h 31m
Japanese
O'Reilly Japan, Inc.
Content preview from 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ

3章3章 同期処理1

 この世の中は並行に物事が進んでいる。例えば車は道路の上をめいめい独立に走行している。しかし、完全に独立しているかというとそうではなく、信号やルールによって一定の協調を強いられている。協調的に動作することで、多くの車が混乱なく走行することが可能になる。並行プログラミングでも、複数のプロセス間で協調動作が必要なのは同じであり、タイミングの同期やデータ更新などを複数のプロセス間で協調的に行うような処理のことを同期処理と呼ぶ。本章では、並行プログラミングの基本的な要素である同期処理について、そのハードウェア的なメカニズムからアルゴリズムまでを説明する。

 本章では、まずはじめに、なぜ同期処理が必要なのか、つまりレースコンディションについて説明し、C言語とアセンブリを用いて、現代的なCPUで利用可能なアトミック演算命令とアトミック処理について説明する。また、同期処理の基本であるミューテックス、セマフォ、条件変数、バリア同期、Readers-Writerロック、Pthreadsについて説明する。C言語とアセンブリを用いることで、原始的な命令と関数についての理解が深まる。

 その後、Rust言語の同期処理ライブラリについて現代的な同期処理手法について説明する。原始的な命令と関数でも同期処理は行えるが、そこにはいくつもの落とし穴がある。一方、Rust言語では同期処理で陥りがちなミスを型システムにより防ぐことができる。現代のプログラマには是非これらを習得してほしい。CとRustの同期処理手法を対比して学ぶことで、Rustの先進的な同期処理手法に関する理解が深まる。最後に、アトミック命令に依存しない代表的な同期処理アルゴリズムであるパン屋のアルゴリズムを紹介する。

Rust言語の同期処理ライブラリは裏側でPthreadsを利用している。並行プログラミングのしくみを知るという意味で、はじめにC言語でPthreadsの説明を行う。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理

Martin Kleppmann, 斉藤 太郎, 玉川 竜司

Publisher Resources

ISBN: 9784873119595Other