複数のスレッドが別々のコアで実行されており (真の並列処理)、それらが同じ変数に同時にアクセスする場合。変数を読み取るだけであることが保証されている場合、真の並列処理で読み取りを行うことができますか?
次の例を検討してください。
その変数 ( と呼ばれるbool stop
) へのアクセス関数を次のように定義すると:
bool const & readOnlyAccesToVariable() // Returns a unchangeble reference to the variable
変数は、マスタースレッドに対してプライベートです。マスター スレッドの役割は、別々のコアで多数のワーカースレッドの実行をできるだけ同時に停止することです。が に変化すると、ワーカーは停止します。stop
1
ワーカーは定期的に次のことを行います。
if (readOnlyAccesToVariable() ) break;
一部のワーカーは同時に停止しますか (つまり、停止の読み取りはシリアル化されず、並列化されます)?