목록2025/04/07 (2)
변수의 기록
2025년 04월 7일LOCK 동기화 공부 ✅ 1. 레이스 컨디션 (Race Condition)여러 스레드(또는 프로세스)가 동시에 공유 자원에 접근할 때,실행 순서에 따라 결과가 달라지는 예측 불가능한 상황📌 예시 (공유 변수 증가):int counter = 0; Thread A: counter++;Thread B: counter++; 두 스레드가 거의 동시에 counter++를 실행하면,실제 결과는 1이 될 수도 있음 (정상은 2여야 함)➡ 데이터의 일관성, 정확성이 깨짐✅ 2. 동기화 (Synchronization)여러 스레드나 프로세스가 공유 자원에 올바른 순서로 접근하도록 제어하는 것레이스 컨디션을 방지하기 위한 필수 메커니즘올바른 동기화 없이는 공유 자원 보호 불가능➡ 락(lock), 세마포..

✅ [1] Spinlock (스핀락)🔹 개념락이 풀릴 때까지 계속 루프 돌며 기다리는 방식test_and_set() 같은 원자적(atomic) 명령어 사용CPU가 제공하는 하드웨어 수준의 atomic 연산을 통해 동기화가 이뤄짐🔹 핵심 특징빠르게 락이 풀릴 거라고 예상될 때 유리락이 오래 걸리면 busy-waiting으로 CPU 낭비 심함멀티코어 환경에서만 유리 🔹 Java에서?Java는 직접적인 스핀락 지원은 없음→ AtomicBoolean + 루프로 유사하게 구현 가능 → 또는 LockSupport.park() + CAS 활용으로 구현 ✅ [2] Mutex (뮤텍스)🔹 개념상호배제를 위한 소유권 있는 락락을 얻은 스레드만 해제할 수 있음Java에선 ReentrantLock, synchroni..