본문 바로가기
Study/클린코드

[클린코드] 13장. 동시성

by Nahwasa 2023. 1. 21.

스터디 메인 페이지

- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다.

- 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다.

 


 

13장. 동시성

⚈ 동시성과 깔끔한 코드는 양립하기 어렵다.

  • 스레드를 하나만 실행하는 코드는 짜기가 쉽다.

 

⚈ 동시성이 필요한 이유

  • 동시성은 결합(coupling)을 없애는 전략이다. 즉, 무엇(what)과 언제(when)를 분리하는 전략이다.
  • 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다.

 

⚈ 동시성의 미신과 오해

  • 동시성은 항상 성능을 높여준다. -> 동시성은 때로 성능을 높여준다. 대기 시간이 아주 길거나 여러 프로세서가 동시에 처리할 독립적인 계산이 충분히 많은 경우에만 성능이 높아진다.
  • 동시성을 구현해도 설계는 변하지 않는다. -> 시스템 구조가 크게 달라진다.

 

⚈ 동시성과 관련된 타당한 생각들

  • 동시성은 다소 부하를 유발한다.
  • 동시성은 복잡하다.
  • 일반적으로 동시성 버그는 재현하기 어렵다.
  • 동시성을 구현하려면 흔히 근본적인 설계 전략을 재고해야 한다.

 

⚈ 동기화하는 메서드 사이에 의존성이 존재하면 동시성 코드를 찾아내기 어려운 버그가 생긴다. 공유 객체 하나에는 메서드 하나만 사용하라.

 

⚈ 동기화하는 부분을 작게 만들어라.

 

⚈ 종료 코드를 개발 초기부터 고민하고 동작하게 초기부터 구현하라. 깔끔하게 종료하는 코드는 올바로 구현하기 어렵다.

 

⚈ 어떻게든 문젠큰 생긴다. 스레드 코드는 많은 플랫폼에서 많은 설정으로 반복해서 계속 테스트해야 한다.

 

댓글