자 이 강의에선 Data races가 무엇 인지 그리고 어떻게 Data races가 발생했는지를 확인할 겁니다
data race는 뭐고 왜 고쳐야할까요?
이 블로그에서 data race가 무엇인지 깔끔한 설명으로 한번 알아보고 갑시다
데이터 레이스(Data Race)
데이터 레이스(Data Race) 데이터 레이스는 병렬 프로그래밍을 할 때 범하기 쉬운, 가장 흔한 오류이다. 데이터 레이스는 멀티 스레드가 같은 데이터를 이용하고 다른 스레드에서 그것을 업데이트
zepeh.tistory.com
https://docs.oracle.com/cd/E19205-01/820-0619/geojs/index.html
1.2 What is a Data Race? (Sun Studio 12: Thread Analyzer User's Guide)
1.2 What is a Data Race? The Thread Analyzer detects data-races that occur during the execution of a multi-threaded process. A data race occurs when: two or more threads in a single process access the same memory location concurrently, and at least one of
docs.oracle.com
읽고 나셨다면 왜인지 아실겁니다
두개 이상의 접근이 동시에 일어나 한개가 어떠한 동작 수행 중에 다른 하나가 수정을 하게 된다면 데이터에 오류가 발생할 수 있기 때문입니다
일단 Data Race가 무었이냐하면
니꼬는 이렇게 설명해줍니다
data race는 둘 이상의 go routine이 어플리케이션의 동일한 데이터베이스에 엑세스할 때 그 엑세스들 중 하나가 데이터를 수정하면서 발생해
예를 들어 더 자세히 설명해줍니다
온라인 에서 티켓을 사려고합니다
남은 티켓은 오직 한장인 상황에서
두명이 동시에 티켓을 사려고 했고 동시에 요청이 들어가 시스템에서 두명에게 티켓구입 OK 사인을 보냅니다
이런 경우의 오류를 data race라고 하는데
데이터는 slice든 array든 무엇이 되는 상관없이 두 엑세스 중 하나가 데이터를 수정하고 하나가 그 수정된 데이터를 읽게되고 이것이 data race가 될 수 있다고 합니다
복잡한 친구인 건 확실한 것 같습니다 ㅠ
쨋든 왜 전 영상에서 data race가 발생했는지 이제 확인해봅니다
위 두 함수는 Peers map을 수정하는데
우리가 localhost:4000/peers 처럼 peers 페이지를 요청하면
해당 함수의 GET case가 실행되면서 Peers map을 사용하게 됨으로
data race가 발생하게 되는 것이죠
그럼 data race가 왜 발생하는지 알아봤으니 다음 강의에서 해결해봅시다!
끝!
'go언어 블록체인' 카테고리의 다른 글
노마드 코인 12-19 리뷰 (0) | 2021.08.17 |
---|---|
노마드 코인 12-17 리뷰 (0) | 2021.08.17 |
노마드 코인 12-15 리뷰 (0) | 2021.08.17 |
노마드 코인 12-14 리뷰 (0) | 2021.08.17 |
노마드 코인 12-13 리뷰 (0) | 2021.08.13 |