同期を使用すると、並行的に実行されているスレッドに関して、プログラムの流れと共有データへのアクセスを制御することが可能になります。
相互排他ロック (mutex ロック)、条件変数、セマフォという 3 つの同期モデルがあります。
相互排他ロックは、特定のコードセクションを実行する、あるいは特定のデータをアクセスするスレッドを一度に 1 つだけに制限します。
条件変数は、特定の条件が満たされるまでスレッドをブロックします。
計数型セマフォは通常、資源へのアクセスを調整します。計数の値は、セマフォにアクセスできるスレッド数の上限です。設定された値に達したセマフォはブロックされます。