Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
[TIL] Chapter 6. 동시성
#pragmatic
2년 전
663

오늘 TIL 2줄 요약

  • 동시성을 확보함으로써 프로그램에 유연성을 얻을 수 있고 개발의 여러 측면에서 시간과 관련된 의존성도 함께 줄여, 분석하기 쉽고 응답속도도 빠른 안정적인 시스템을 만들 수 있게 된다. (시간적 결합 깨트리기)

  • 동시성을 구현하는 방법으로 액터와 프로세스를 사용하는 방식이 있다.

TIL (Today I Learned) 날짜

2022. 03. 30

오늘 읽은 범위

6장. 동시성

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

  • '동시성 (concurrency)'은 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것.

  • '병렬성 (parallelism)'은 실제로 동시에 실행되는 것.

  • 소프트웨어의 설계 요소로서의 시간에는 우리가 신경 써야 할 측면이 두 가지가 있는데, 그것은 동시성(동시에 일어나는 일들)과 순서(시간의 흐름 속에서 일들의 상대적인 위치)다.

  • 우리는 시간이나 순서에 의존하는 시간적 결합을 끊는 방법을 생각해 내야 한다. 그렇게 함으로써 유연성도 얻을 수 있고, 작업 흐름 분석과 아키텍처, 설계, 배포와 같은 개발의 여러 측면에서 시간과 관련된 의존성도 함께 줄일 수 있다. 결과적으로 분석하기 더 쉽고 응답속도도 더 빠르며 더 안정적인 시스템을 만들 수 있을 것이다.

  • 작업 흐름 분석으로 동시성을 개선하라.

  • 공유 상태는 틀린 상태다.

  • 리소스를 공유하는 환경에서 동시성은 어렵다.

  • 액터와 프로세스를 사용하면 흥미로운 방식으로 동시성을 구현할 수 있다.

    • 액터: 자신만의 비공개 지역 상태를 가진 독립적인 가상 처리 장치.

    • 프로세스: 더 일반적인 가상 처리기. 보통 운영 체제가 동시성을 지원하기 위하여 구현.

  • 공유 상태 없는 동시성을 위하여 액터를 사용하라.

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

  • 5장까지는 어느 정도 들어봤던 개념들이였지만 동시성과 병렬성은 사실 개인적으로 생소한 개념이라 조금 어렵게 느껴졌다. Topic 33 시간적 결합 깨트리기 부분에서 '우리는 보통 프로그래밍할 때 두 측면 (동시성, 병렬성) 모두 특별히 신경쓰지 않는다. 자리에 앉아 아키텍처를 설계하거나 프로그램을 짜기 시작할 때는 보통 직선적 사고를 하기 마련이다.' 라는 부분에서 뜨끔했다. 이제 동시성이라는 개념에 대해 알게 되었으니 다음에 코드를 짤 때는 동시성도 고려해봐야겠다.