자 서른 두 번째 키워드 'Race Condition'를 알아보겠다.
스레드를 알아보았던 키워드와 연관되는 개념이므로 같이 알아보았다.
Race Condition(경쟁 상태)은 컴퓨터 프로그램에서 두 개 이상의 프로세스 또는 스레드가 동시에 공유 자원에 접근할 때 발생하는 문제로, 자원의 접근 순서에 따라 프로그램의 동작이 달라지는 상황을 말한다. 이러한 상황은 예기치 않은 결과를 초래할 수 있으며, 데이터의 무결성을 위협할 수 있다.
동시성: 여러 스레드가 동시에 실행되면서 동일한 자원에 접근하거나 변경하려고 할 때.
공유 자원: 변수, 메모리, 파일 등 공유 자원에 대한 비동기적인 접근.
부적절한 동기화: 자원에 대한 접근을 적절히 동기화하지 않으면 예상치 못한 순서로 접근이 이루어질 수 있음.
데이터 무결성 손상: 올바르지 않은 값이 저장될 수 있다.
예측 불가능한 동작: 프로그램의 실행 결과가 실행 시점마다 다를 수 있다.
디버깅 어려움: 문제를 재현하기 어렵고, 발생 원인을 찾기 어려워 디버깅이 복잡하 다.
동기화 메커니즘 사용: 뮤텍스(Mutex), 세마포어(Semaphore), 모니터(Monitor) 등을 사용하여 자원 접근을 직렬화한다.
원자적 연산 사용: 특정 하드웨어나 라이브러리에서 제공하는 원자적 연산을 사용하여 동시성을 관리한다.
임계 구역 최소화: 임계 구역(critical section)을 최소화하여 성능 저하를 줄이면서도 안전하게 자원에 접근할 수 있도록 한다.
상태 기반 동기화: 특정 상태 전이만 허용하는 논리적 구조를 사용하여 동기화 문제를 해결한다.
지금 몇 연속 스레드의 관련해서 알아보고 있는데 와우 진짜 파도파도 나오는 개념인것 같다.
그만큼 앞으로의 지식이 중요할 것이기 때문에 놓지지 않겠다..