본문 바로가기
DEVELOPMENT/BOOK

실용주의 프로그래머 TIL(22.03.30)

by Z@__ 2022. 3. 30.
반응형

오늘의 책 읽기

  • 6장 동시성

 

오늘의 TIL

  1. 소프트웨어 아키텍처에서 시간이라는 측면이 자주 무시되는데, 동시성(동시에 일어나는 일들)과 순서(시간의 흐름 속에 일들의 상대적인 위치)다. 보통 설계를 할 때, 'A를 하고 B를 하고  ~' 등등과 같이 명령형으로 코드를 설계하게 된다.
    하지만 이런 식으로 생각하다보면 시간적 결합을 만들게 된다. 동시성을 확보하기 위해서는 시간이나 순서에 의존하는 시간적 결합을 끊어내야 하고, 이를 통해 유연성, 작업흐름분석, 아키텍처, 설계,  배포와 같은 여러 측면에서 시간과 관련된 의존성도 줄일 수 있다.
  2. 우리는 활동다이어그램을 통해 작업 흐름을 기록할 수 있다.
    다이어그램에서 동기화 막대를 만들어, 동기화 막대로 들어오는 활동이 모두 완료된 후에야 진행할 수 있도록 만들 수 있다.
  3. 동시성을 갖는 프로그램을 설계할 때 흔히 상태공유를 이용하는데, 이로인해 많은 에러가 발생할 수 있다.
    그래서 세마포어 및 다른 상호 배제 방법을 이용한다.
  4. 액터모델에서는 동시성을 다루는 코드가 필요없다. 공유된 상태가 없기 때문이다.
    또한 명령형 코드를 쓸 필요가 없다. 액터가 수신하는 메세지에 따라 알아서 실행되기 때문이다.
    동시에 실행되는 작업을 구현할 때 액터를 사용하자.

 

반응형

댓글