본문 바로가기

go언어 블록체인

노마드 코인 12-23

이 영상은 지금까지 만든 p2p 파일을 전체적으로 recapitulate하는 시간이다

 

이 영상을 보면서 생기는 의문은 몇가지 있다

 

1. 왜 read(), write() 함수들이 peers들을 lock하면서 시작하지 않고 defer 에서 p.close()를 시작하지?

 

read()함수와 write() 함수는 lock, unlock이 아니라 close()함수를 쓰는데

그 이유는 read(), write()함수는 오류가 나면 clos()함수를 통해 오류난 peer.connection 을 삭제한다

삭제할 때 다른 곳에서 peer를 사용?수정?읽기?하고있다면 data race가 발생한다

그러므로 defer close()를 사용하여 Mutex를 사용해주는 것이다

 

 

2. write함수랑 read 함수랑 둘다 go routine으로 돌아가니까 write가 다 쓰면 바로 read()가 읽어야 하는거 아닌가? -> 그럼 4000이 보낸 메세지는 4000이 받아야 하는게 아닌가?

 

3. 그리고 이번 initPeer() 함수에서 왜 data race가 발생하는 코드가 있었는지 아직도 모르겠습니다

 

 

영상 뒷부분에는 data race를 고치기 위해 initPeer() 함수에 락, 언락 코드를 첨가해준다

 

끝!

꼭 위 3 문제 해결하기!

 

'go언어 블록체인' 카테고리의 다른 글

노마드 코인 12-25 리뷰  (0) 2021.08.18
노마드 코인 12-24 리뷰  (0) 2021.08.18
노마드 코인 12-22 리뷰  (0) 2021.08.18
노마드 코인 12-20 리뷰  (0) 2021.08.17
노마드 코인 12-19 리뷰  (0) 2021.08.17