InitializeCriticalSectionAndSpinCount(&m_lock, 4000); // m_lock의 임계영역 생성 및 초기화(섹션이름, 스핀카운트)
스핀락은 Busy Waiting을 통하여 스레드를 잠재우지 않고 약간의 자원을 소모하는 대신 context switching을 방지하여 gain을 얻을 수 있다.
Busy Wating : 현재 CPU를 사용하는 스레드가 무한 루프를 돌면서 다른 쓰레드에게 CPU를 양보하지 않는 것이다.
하지만 임계영역에 있는 스레드가 Lock을 오래 사용한다면 Busy Wating은 그 만큼 CPU 자원을 소모하고 있으니 Sleeping보다 자원을 더 낭비하게 된다.