同期を使用すると、並行的に実行されているスレッドに関して、プログラムの流れと共有データへのアクセスを制御することが可能になります。
相互排他ロック (mutex ロック)、読み取り/書き込みロック、条件変数、セマフォーという 4 つの同期モデルがあります。
相互排他ロックは、同時に特定のコードセクションを実行するスレッド、あるいは特定のデータをアクセスするスレッドを一度に 1 つだけに制限します。
読み取り/書き込みロックは、保護された共有リソースに対して、並行読み取りおよび排他的書き込みを許可します。リソースを変更するには、スレッドがまず排他書き込みロックを獲得する必要があります。すべての読み取りロックが開放されない限り、排他書き込みロックは許可されません。
通常、計数型セマフォーは、リソースへのアクセスを調整します。計数の数は、セマフォーによって保護されているデータに並行的にアクセスできるスレッド数の上限です。設定された値に達すると、この数が変更されるまで、セマフォーによって呼び出しスレッドがブロックされます。2 進型セマフォー (数は 1 に設定) は、相互排他ロックと同様の動作を行います。