공유 변수에 동시성 문제 발생시키기

실습 🧑‍💻

  1. 프로젝트 생성하기
  2. 동시성 문제 발생하는 코드 작성하기
  3. k6로 테스트하기

왜 동시성 문제가 발생할까?

공유 변수를 증가시키는 연산은 원자적(atomic)이지 않음

실제로는 다음 3단계로 수행

  1. 변수 읽기
  2. 값 증가 ( +1 )
  3. 값을 변수에 저장

두 개 이상의 스레드가 동시에 이 연산을 수행하면,

한 스레드의 결과가 덮어씌워지는 Lost Update 현상이 발생할 수 있음

원자적**(atomic)**이란?

상세 흐름

흐름 스레드 A 스레드 B 변수 값
1 변수 읽기 0
2 변수 읽기 0
3 값 증가 (+1) 0
4 값 증가 (+1) 0
5 값 저장 1
6 값 저장 1

어떻게 해결할 수 있을까?

락(Lock)을 건다!