728x90 Lock2 SpinLock 스핀락(SpinLock)은 임계 구역(critical section)에 진입이 불가능할 때 진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락을 말한다. 스핀락이라는 이름은 락을 획득할 때까지 해당 스레드가 빙빙 돌고 있다(spinning)는 것을 의미한다. 스핀락은 두 개의 상태를 가질 수 있는 변수를 갖는 낮은 단계의 동기화 메커니즘이다. 두상태는 아래와 같다. 1. 획득됨 (acquired) 2. 해제됨 (released) 락의 장점은 '인터럽트 컨텍스트’에서도 사용할 수 있다는 것이다. 인터럽트 컨텍스트란, 컴퓨터가 중요한 작업을 처리하고 있을 때 다른 작업을 일시 중단하는 상황을 말한다. 이런 상황에서는 일반적으로 ‘잠자기’ 상태인 뮤텍스나 세마포어 같은 도구를 사용할 수 없다. .. 2024. 3. 5. 락 기초 #include #include #include vector v; void push() { for (int i = 0; i < 10000; ++i) { v.push_back(i); } } int main() { std::thread t1(push); std::thread t2(push); t1.join(); t2.join(); cout 2024. 3. 4. 이전 1 다음 728x90