前回の入門:msyksphinz.hatenablog.com
並列プログラミングに改めて入門するために並行プログラミング入門を読んでみることにした(積読しまくっている)。
並列処理の基本的なところを復習している。
Compare and Swap, Test and Set, LL/SCのようなところから始まって、実際の排他制御の部分についてはミューテックス、セマフォ、条件変数のようなところを見ていった。
ちょっと全体的な構造を把握するのに苦労している。最終的なpthread
の実装が出てくるのは良いのだが、その前にスピンロックの実装だったり、ちょっとナイーブな実装が出てきて、どこが正解でどこがナイーブな実装なのか良く分からなくなる時がある。
パン屋のアルゴリズムは、Rustなので読みにくいが、ちゃんと理解しておきたい。 と言っても、みためはいわゆる病院の待合室の番号を受け取る仕組みな感じがしている。
追記:パン屋のアルゴリズムをしっかり読み直した。チケットを取得する部分をなるべく排他的に動くようにして、チケットとスレッドIDを用いて優先度を決めるのが基本的な考え方かな。