개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
작업 흐름 분석으로 동시성을 개선하라.
공유 상태 없는 동시성을 위하여 액터를 사용하라.
칠판으로 작업 흐름을 조율하라
TIL (Today I Learned) 날짜
2022. 05. 25
오늘 읽은 범위
6장. 동시성
책에서 기억하고 싶은 내용을 써보세요.
동시성(concurrency)이란 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것이다. (p.241)
우리는 동시성을 확보해야 한다. 시간이나 순서에 의존하는 시간적 결합을 끊는 방법을 생각해 내야 한다. 그렇게 함으로써 유연성도 얻을 수 있고, 작업 흐름 분석과 아키텍처, 설계 배포와 같은 개발의 여러 측면에서 시간과 관련된 의존성도 함께 줄일 수 있다. (p.244
)
'액터'는 자신만의 비공개 지역 상태를 가진 독립적인 가상 처리 장치다. (p.259)
'프로세스'는 본래 더 일반적인 가상 처리기로, 보통 운영 체제가 동시성을 지원하기 위하여 구현한다. (p.259)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
이번 챕터를 이해하기 위해서는 비동기 프로그래밍의 개념에 대해 알고있는 상태에서 읽어야 원만히 받아들일 수 있는 내용이었다. 비동기 프로그래밍은 하나의 요청 처리가 완료되기 전에 제어권을 다음 요청으로 넘겨 Blocking 되지 않으며 다음 요청을 처리하는 방식을 말하고, 이에 더해서 동시성 프로그래밍은 용어 그 자체의 의미로 보자면 동시에 실행되는 것처럼 보이는 프로그램을 말한다.
사진 출처 (동시성 프로그래밍/ 비동기 프로그래밍 (velog.io))
동시성 프로그래밍의 원리는 통장을 만들러 온 n개의 대기열과 한 명 이상의 은행직원으로 이루어진 프로그램으로 비유할 수 있다.
각 다른 대기열이 같은 메모리를 바라보지만 이들이 참조하는 메모리의 값이 서로 충돌하지 않고 액터와 칠판의 작업 흐름 조율을 잘 설계하여 프로그램을 설계해야 겠다고 느끼게 된 챕터였다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
세마포어 : 두 개의 원자적 함수로 조작되는 정수 변수로서, 멀티 프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법으로 사용된다. 고전적인 해법이지만 모든 교착 상태를 해결하지는 못한다.
오늘 읽은 다른사람의 TIL
유로띠 님의 TIL (6장. 동시성)
zelord 님의 TIL (실용주의 프로그래머 TIL(22.03.30))