排他的制御をしたい時に使うのがこのCiriticalSection(クリティカルセクション)。具体的にいつ使うのかというと、マルチスレッド処理などをしている時に、同時にアクセスされるとまずい部分がある場合の時に使う。 例えば、2つのスレッドがあった時、スレッド1で配列のサイズを変更しスレッド2で同じ配列のある場所を読み込む場合、配列サイズ変更中などにアクセスするとアクセス違反が発生しプログラムが落ちることもある。 WindowsでこのCriticalSectionを使う時は、InitializeCriticalSection、EnterCriticalSection、LeaveCriticalSection、DeleteCriticalSectionという関数及びCRITICAL_SECTIONという構造体を利用する。具体的使い方などは、MSDNなどで調べてもらうとして、今回はこれを使った