동시성이 필요한 이유?
- 결합(coupling)을 없애는 전략 (= 무엇과 언제를 분리)
- 응답 시간과 작업 처리량 개선
동시성에 관한 미신과 오해
- 동시성은 항상 성능을 높여준다?
- x. 대기 시간이 길어 여러 스레드가 프로세서를 공유할 수 있거나 여러 프로세서가 동시에 처리할 독립적 계산이 충분히 많은 경우에만 가능
- 동시성을 구현해도 설계는 변하지 않는다?
- x. 무엇과 언제를 분리하면 시스템 구조는 크게 달라진다.
동시성에 관한 타당한 생각
- 동시성은 다소 부하를 유발함
- 동시성은 복잡함
- 일반적으로 동시성 버그는 재현하기 어려움 (일회성 문제로 여기기 쉬움)
- 동시성을 구현하려면 흔히 근본적인 설계 전략을 재고해야 함.
난관
- 여러 스레드가 동시에 같은 코드에 접근할 가능성이 있다 —> 문제 발생!!
동시성 방어 원칙
- 동시성 코드는 다른 코드와 분리
- 독자적인 스레드로, 가능하면 다른 프로세서에서 돌려도 괜찮도록 자료를 독립적인 단위로 분할
- 공유 자원 줄이기 (공유 객체 하나에는 메서드 하나만 사용)
- 언어가 제공하는 클래스 검토
- 동기화 하는 부분 최대한 작게 만들기
- 종료 코드를 개발 초기부터 구현하고 구현할 것
- 스레드 코드는 테스트 필수.
반응형
'books > clean code' 카테고리의 다른 글
17. 냄새와 휴리스틱 (0) | 2024.01.05 |
---|---|
12. 창발성 (0) | 2024.01.03 |
11. 시스템 (1) | 2023.12.28 |
10. 클래스 (1) | 2023.12.22 |
9. 단위테스트 (1) | 2023.12.20 |