Spring
Spring Day 35 : 동시성 제어의 중요성
우 석
2024. 3. 22. 20:03
동시성 제어의 중요성
- Race Condition
- 동시 실행으로 인해 발생하는 위협 중 하나로, 두 개 이상의 스레드가 공유 데이터에 동시에 액세스 하고 이를 동시에 수정하려고 시도하면 문제가 발생한다.
- 적절한 동기화 메커니즘이 없으면 이러한 스레드가 서로의 작업을 실수로 방해하여 예상치 못한 잘못된 결과를 초래할 수 있다.
- 정리: 두 개 이상의 스레드가 동시에 같은 데이터를 접근하여 값을 변경하고자 할 때, 데이터의 예상치 못한 변경이 발생할 수 있다.
- Dead Lock
- 두 개 이상의 스레드가 무기한 차단되어 각각 다른 스레드가 진행해야 하는 리소스를 해제할 때까지 기다리는 경우 교착 상태가 발생한다. 이러한 상황은 관련된 스레드 중 어느 것도 진행할 수 없는 교착 상태를 만들어 시스템을 정지하게 만든다.
- 데이터베이스 트랜잭션이나 스레드 간 통신 채널과 같은 복잡한 리소스 종속성이 있는 시스템에서 교착 상태가 자주 발생하기에 리소스 획득 및 해제를 주의 깊게 관리하지 않으면 교착 상태가 예기치 않게 나타나 애플리케이션 작동에 심각한 중단을 발생시킬 수 있다.
- 정리: 두 개 이상의 스레드가 서로의 작업이 완료될 때까지 기다리면서 결국 아무도 완료되지 않는 문제가 발생할 수 있다.
- Data Corruption
- 여러 스레드가 적절한 동기화 없이 동시에 공유 데이터에 액세스하고 수정하면 데이터 무결성이 손상된다.
- 멀티 스레드의 업데이트 충돌은 일관되지 않거나 유효하지 않은 상태로 이어져 데이터를 신뢰할 수 없게 만들고 잠재적으로 시스템 전체에 연속적인 오류를 일으킬 수 있다.
- 정리: 두 개 이상의 스레드가 동시에 같은 데이터에 접근하여 값을 변경할 때, 예상치 못한 데이터의 변형이 발생할 수 있다.