inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

재고시스템으로 알아보는 동시성이슈 해결방법

Optimistic Lock 활용해보기

안녕하세요 강사님 낙관적 락 질문있습니다.

654

진짜 잘하고싶다

작성한 질문수 30

0

낙관적 락도 데드락이 터질 수 있다는 글을 많이 봤는데, 강의에서는 다루지 않아서 좀 헷갈립니다.

사람마다 코드가 다 다르기 때문에 데드락이 무조건 터진다 안 터진다를 말할 수 없을 거 같은데,

어떤 상황일 때 데드락이 발생하는지에 대해 간단하게라도 설명해주실 수 있으신가요?

항상 감사합니다.

java spring 동시성

답변 2

0

최상용

진짜 잘하고싶다님 안녕하세요.
말씀해주신대로 코드가 다 다르기 때문에 데드락이 무조건 발생한다, 발생하지 않는다라고 말할 수는 없을 것 같습니다.
데드락이 발생하는 대표적인 예시에서는 a 메소드와 b 메소드는 둘다 Stock 과 Product 를 갱신한다고 가정합니다.
이때 a 메소드에서는 Stock 은 갱신했고 Product 를 갱신하고자 합니다.
동시에 b 메소드에서는 Product 를 갱신했고 Stock 을 갱신하고자 합니다.
타이밍이 좋지 않아 동일한 리소스를 갱신한다고 가정할 때 a 메소드는 Product 를 갱신하기 위해 b 메소드의 종료를 기다리고 b 메소드는 Stock 을 갱신하기 위해 a 메소드의 종료를 기다리게 됩니다.

이것이 데드락이 발생하는 대표적인 예시라고 생각합니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요, 진짜 잘하고싶다 님, 인프런 AI 인턴이에요.

데드락은 여러 개의 스레드 또는 프로세스가 서로의 작업이 끝나기만을 기다리며 무한히 대기하는 상태를 말합니다. 데드락이 발생하는 경우는 “교착 상태”라고도 부릅니다.

데드락은 일반적으로 4가지 조건이 동시에 만족되어야 발생합니다.
1. 상호 배제(Mutual Exclusion): 자원은 동시에 한 번에 하나의 프로세스만이 사용할 수 있어야 합니다.
2. 점유 대기(Hold and Wait): 최소한 하나의 자원을 점유한 상태에서 다른 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 합니다.
3. 비선점(No Preemption): 다른 프로세스에 점유된 자원을 강제로 빼앗을 수 없어야 합니다.
4. 순환 대기(Circular Wait): 프로세스의 집합에서 각 프로세스는 순환적으로 다음 프로세스가 점유한 자원을 대기해야 합니다.

이러한 조건들이 동시에 성립할 때 데드락이 발생할 수 있습니다. 코드의 구조나 상호작용에 따라 데드락 발생 가능성이 달라질 수 있으며, 주의가 필요합니다.

더 자세한 내용과 데드락 방지를 위한 기법은 관련 강의나 자료를 참고해주시기 바랍니다. 감사합니다.

레디선 테스트코드에서 채널이름은 없어도 되는건가요?

0

43

2

낙관적 락을 사용할 떄 차이점

0

121

2

동시성 검증 코드에 관한 문의

0

95

2

단일연산

0

70

2

낙관적락vs. 레디스락

0

108

2

안녕하세요. 레디슨 질문있습니다..!!

0

67

2

@Lock(OPTIMISTIC)이 필요한 이유

0

90

2

get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?

0

132

2

DataSource Hikari 사용 이유

0

147

2

saveAndFlush 사용 이유 문의

0

113

3

비관적 락 VS 네임드 락

0

160

3

application.yaml 에 redis 정보

0

100

2

왜 클래스 이름에 Facade 가 붙나요?

0

185

2

@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.

0

219

2

@modifying 이용한 동시성 제어

0

168

2

DB락과 분산락

0

262

2

NamedLock 테스트 실패

0

186

2

테스트에서 트랜잭션 어노테이션 질문 있습니다.

0

173

2

optimistic Lock 재시도 질문입니다.

0

232

2

낙관적 락 테스트 실패

0

241

2

오류?

0

1627

4

LettureLockStockFacadeTest에서 오류가 발생합니다.

1

268

2

Pessimistic Lock 전체 테스트 오류 문의

0

360

3

비관적 락 vs 레디스(Lettuce)락 비교 관련 질문

0

460

2