노마드북클럽/클린코드

(외전) 📚 13장. 동시성

햅삐한 포메라리안 2022. 3. 15. 12:32
반응형

오늘 TIL 3줄 요약

  • 동시성은 결합(coupling)을 없애는 전략이다.
  • 동시성 오류를 일으키는 잠정적인 원인을 철저히 이해해야 한다.
  • 어떻게든 문제는 생긴다. 일회성이라고 치부하지 말자.

 

TIL (Today I Learned)

2022.03.15

 

오늘 읽은 범위

13장. 동시성

 

책에서 기억하고 싶은 내용을 써보세요.

  • 권장사항
    • 동시성 코드는 다른 코드와 분리하라 (p.230)
    • 자료를 캡슐화(encapsulation)하라. 공유 자료를 최대한 줄여라. (p.231)
    • 독자적인 스레드로, 가능하면 다른 프로세서에서, 돌려도 괜찮도록 자료를 독립적인 단위로 분할하라. (p.232)
    • 언어가 제공하는 클래스를 검토하라. 자바에서는 java.util.concurrent, java.util.concurrent.atomic, java.util.concurrent.locks를 익혀라(p.233)
    • 공유 객체 하나에는 메서드 하나만 사용하라 (p.235)
    • 동기화하는 부분을 최대한 작게 만들어라 (p.236)
    • 종료 코드를 개발 초기부터 고민하고 동작하게 초기부터 구현하라. (p.237)
    • 문제를 노출하는 테스트 케이스를 작성하라. 프로그램 설정과 시스템 설정과 부하를 바꿔가며 자주 돌려라. 테스트가 실패하면 원인을 추적하라. 다시 돌렸더니 통과하더라는 이유로 그냥 넘어가면 절대로 안 된다. (p.237)
    • 시스템 실패를 '일회성'이라 치부하지 마라. (p.238)
    • 스레드 환경밖에서 생기는 버그와 스레드 환경에서 생기는 버그를 동시에 디버깅하지 마라. 먼저 스레드 환경 밖에서 코드를 올바로 돌려라. (p.238)
    • 다양한 설정에서 실행할 목적으로 다른 환경에쉽게 끼워 넣을 수 있게 코드를 구현하라. (p.239)
    • 처음부터 그리고 자주 모든 목표 플랫폼에서 코드를 돌려라. (p.240)
    • 흔들기 기법(jiggle)을 사용해 오류를 찾아내라 (p.243)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 오우 동시성을 이용해야 할 때가 꼭 있을 것 같다. 다만 동시성을 이용할 때는 각별한 주의가 필요하다...
  • 동시성을 이용하다가 생기는 문제들을 읽어보니 심각했다. 계속 나는 널 기다리고... 너도 날 기다리고... 우리는 만날 수 없고...?
  • 검색하다가 동시성과 병렬성을 구분하는 것을 봤는데 이것도 잘 알고 있어야지 나중에 적용할 때 필요한 것을 고를 수 잘 고를 수 있을 것 같다.

 

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 흔들기 기법(jiggle)
  • 동시성과 병렬성이라는 것이 있는데 2개는 서로 다른 것이다.

https://seamless.tistory.com/42

 

동시성(Concurrency) vs 병렬성(Parallelism)

서점에 가면 다양한 언어별로 동시성을 다루는 책들을 많이 볼 수 있습니다. 프로그래밍을 하다 보면 이러한 동시성 처리가 필요한 경우가 있습니다. 그런데 동시성이라는 말을 종종 병렬성과

seamless.tistory.com

 

반응형