マルチコアと同期
クリティカルセクションの説明として正しいものはどれか。
- A共有のデータを操作するため、同時に1つのスレッドしか実行してはいけないプログラムの部分
- Bプログラムの中で最も実行時間の長い部分
- Cエラーが起きたときにだけ実行される部分
答えと解説を見る
正解:A. 共有のデータを操作するため、同時に1つのスレッドしか実行してはいけないプログラムの部分
共有の変数を読んで書き換える部分を、複数のスレッドが同時に実行するとデータ競合が起こります。このように同時に1つのスレッドだけが実行すべき部分をクリティカルセクションと呼び、入る前にロックを取り、出るときに解放して守ります。クリティカルセクションが長いほどほかのスレッドが待つ時間も長くなるので、できるだけ短くするのが基本です。
- A. 正しい。ロックなどで守ります。
- B. 実行時間の長さで決まるものではありません。
- C. エラー処理のことではありません。