--並行プログラムについて--
-並行プログラムの概要-
ここでの並行プログラムは共有メモリ型マルチプロセッサを扱うためのプログラムであるとする。
並行プログラムは、共有メモリに複数のプロセッサから、どうやってアクセスするのかや、データ転送経路をどう作るかなどといったことを理解し、
プログラムを考える必要がある。
-相互排他制御-
並行プログラムを実装する際は、相互排他制御について考慮する必要がある。
相互排他制御はコアを複数用いた際のプログラミングをする上で協調するための形式である。
これにより、共有メモリへのアクセス、読み書きを制御し、プログラムが正しく振る舞うようにする。
-Lock-
並行プログラム中でデータ競合を起こさないためにLockをかけて解決する。
Lockのかけ方
・1度に1つのスレッドだけしか実行できない部分(Critical Section)それぞれにLockを用意。
・Critical Sectionの前にlock()を実行
・Critical Sectionの後にunlock()を実行
( lock()メソッドとunlock()メソッドを持つLockクラスを実装する)
これにより、共有メモリへのアクセス、読み書きを制御。
-Lockの性質-
・Safety property
正しい計算結果を保証する性質
・Liveness property
システム全体が止まることが無いことを保証する性質