- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다.
- 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다.
13장. 동시성
⚈ 동시성과 깔끔한 코드는 양립하기 어렵다.
- 스레드를 하나만 실행하는 코드는 짜기가 쉽다.
⚈ 동시성이 필요한 이유
- 동시성은 결합(coupling)을 없애는 전략이다. 즉, 무엇(what)과 언제(when)를 분리하는 전략이다.
- 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다.
⚈ 동시성의 미신과 오해
- 동시성은 항상 성능을 높여준다. -> 동시성은 때로 성능을 높여준다. 대기 시간이 아주 길거나 여러 프로세서가 동시에 처리할 독립적인 계산이 충분히 많은 경우에만 성능이 높아진다.
- 동시성을 구현해도 설계는 변하지 않는다. -> 시스템 구조가 크게 달라진다.
⚈ 동시성과 관련된 타당한 생각들
- 동시성은 다소 부하를 유발한다.
- 동시성은 복잡하다.
- 일반적으로 동시성 버그는 재현하기 어렵다.
- 동시성을 구현하려면 흔히 근본적인 설계 전략을 재고해야 한다.
⚈ 동기화하는 메서드 사이에 의존성이 존재하면 동시성 코드를 찾아내기 어려운 버그가 생긴다. 공유 객체 하나에는 메서드 하나만 사용하라.
⚈ 동기화하는 부분을 작게 만들어라.
⚈ 종료 코드를 개발 초기부터 고민하고 동작하게 초기부터 구현하라. 깔끔하게 종료하는 코드는 올바로 구현하기 어렵다.
⚈ 어떻게든 문젠큰 생긴다. 스레드 코드는 많은 플랫폼에서 많은 설정으로 반복해서 계속 테스트해야 한다.
'Study > 클린코드' 카테고리의 다른 글
[클린코드] 14~17장 (0) | 2023.02.11 |
---|---|
[클린코드] 12장. 창발성 (0) | 2023.01.21 |
[클린코드] 11장. 시스템 (0) | 2023.01.21 |
TDD와 함께 SRP, OCP, DIP를 만족하도록 코드 개선해보기 (0) | 2023.01.11 |
[클린코드] 10장. 클래스 (0) | 2023.01.11 |
댓글