동시성 – 켄트 벡의 "구현 패턴"을 보던 중에

원래는 어제 도착해야했을 책이지만 모종의 일로 하루 늦어져서 오늘 오전에 도착.

리뷰는 한참 뒤에나 쓸 것 같지만, 오늘 회사에서 점심시간에 잠깐 읽은 부분이 맘에 들어서 발췌.

내가 동시성 문제를 해결하는 방법은 언제나 동시성 문제를 지니고 있는 부분을 애플리케이션의 다른 부분과 분리시키는 것이었다. 이 방법을 통해 대부분의 동시성 문제를 해결할 수는 있으나, 나는 그에 대해 설명을 할 자신이 없다.

켄트 벡의 구현 패턴 1장

켄트 벡이 자기가 아는 것만 설명하겠다라고 말한 후에, 그런 이유에서 동시성(concurrency)에 대해서는 설명하지 않고 넘어간다라고 한다. 그리고나서 쓴 말이 위의 저 발췌된 부분.

현재의 멀티스레딩 혹은 동시 프로그래밍(concurrent–programming)의 패러다임에서 가장 효율적인 구현 방법은 아마도

  • 위에서 쓴 것 처럼, 동시성이 직접적으로 드러나는 부분은 줄인다
  • 그렇지만 모든 동시성을 활용한다 — 모든 코어/CPU/thread 를 최대한 동작하게 한다

일 것 이다. 뭔가 모순되는 것 같지만 이게 기본 아이디어가 된다.

  • 일을 서로 독립되게 혹은 모순되지 않게 쪼개고,
  • 쪼갠 부분을 충분히 만들어내고,
  • 각 쪼개진 동시성이 없는 부분을 동시에 실행한다

ps. 근데 저 중에 “다른 부분과 분리 시킨다"라는게 쉽지만은 않다.