[실용주의 프로그래머] 6장. 동시성
· 테크· CS
CS
Machine translation — switch to KO for the original.
DAY 12,13 오늘 읽은 범위: 6장. 동시성
? 책에서 기억하고 싶은 내용?
'동시성'이란 동시에 실행 중인 것처럼 행동하는 것을 의미하고,
'병렬성'이란 실제로 동시에 실행되는 것이다.
- 동시성은 파이퍼, 스레드, 프로세스 등을 사용
- 병렬성은 멀티코어나 여러 대의 컴퓨터를 이용
작업흐름 분석을 통해 동시성을 개선하라.
- 시간적 결함 → 동시성, 순서
- 활동 다이어그램을 사용하면서 동시에 수행할 수 있는데도 아직 동시에 하고 있지 않은 활동들을 찾아내서 병렬성을 극대화할 수 있다.
- 엘릭서의 컴파일러
시작할 때 빌드 프로젝트를 여러 모듈로 쪼갠 후, 각각을 병렬로 컴파일한다. 가장 바깥쪽 모듈의 컴파일이 완료되었다는 것은 모든 코드가 컴파일되었다는 것이다. - 동시성을 고려한 설계
자바의 멀티 쓰레드 기능으로 동시성을 고려하게 된다. thread safe
더 깔끔한 인터페이스를 설계하는 방향을 고려한게 된다.
예) C의 strtok보다 Java의 StringTokienizer를 이용한 설계가 유지보수하기에도 더 깔끔하다.
공유 상태는 틀린 상태다.
- 세마포어
상호배제, 뮤텍스, 모니터
단순히 한 번에 한 사람만이 가질 수 있는 무언가
lock/unlock, claim/release - 트랜잭션 없는 갱신
공유 상태 없는 동시성을 위해 액터를 사용하라.
- '액터'는 자신만의 비공개 지역상태를 가진 독립적인 가상 처리 장치다. 우편함이 비어있을 때만 잠든다.
- '프로세스'는 운영체제의 동시성을 위해 구현하는데, 이 챕터에서 프로세스는 액터처럼 만들어 제한적으로 사용하는 경우의 프로세스를 말한다.
- 액터는 관리하는 것이 없고, 외부에서 지역상태 접근이 불가능하며, 일방향 메시지 성격을 띤다.
- 액터는 공유된 상태가 없어 동시성 관리할 필요가 없다.
- 얼랭(Erlang)과 런타임
칠판을 이용해 작업흐름을 조율하라.
- 일반적인 분산 애플리케이션을 작성할 때는 시스템 내부의 모든 분산 트랜잭션과 상호작용마다 서로 구별되는 API 호출을 만드느라 상당한 시간을 소모하기 마련이다.
? 오늘 읽은 소감?
이전에 작성한 내용이 개정 전 책이라서 목차가 상당히 달라진 것을 이제 알았다.
그래서 고쳐놓느라 이번에는 저절로 이전 분량도 새로 정리하는 복습시간이 되었던 것 같다.
다행이도 2일의 시간이 주어져서 감사했다.
특히나 아이스크림 스쿱이야기를 하는 부분에서는 복잡한 로직의 코드를 작성했던 경험이 있어 반성하게 됐는데, 이 부분에 대한 자세한 방안을 코드로 보여주면 더 좋았겠다는 생각이 들었다.
공유상태에 대한 개념은 더 학습이 필요할 것 같다.
❓ 궁금한 점이나 잘 이해되지 않는 내용
- 세마포어 처리를 위한 라이브러리
실용주의 프로그래머 - 교보문고
The Pragmatic Programmer숙련공에서 마스터로프로그래밍은 대체로 머리로 하는 일이지만 한편으로는 몸에 새겨져야 하고 때로는 그 이상의 통찰을 발휘해야 하는 상황에 맞닥뜨리게 되는 복합적인
www.kyobobook.co.kr
Comments
No comments yet. Be the first!
318 posts in 테크
- 341Migrating from Permanent Access Tokens to Token Exchange — Why Order Matters
- 326Startup & Product Glossary: Terms Every Solo Founder Should Know
- 325Context Management — How I Do It Now
- 324Claude Code Routines vs Cowork Schedule — What's the Difference?
- 323로컬 LLM + Claude Code로 PM 업무 자동화 에이전트 만들기
1–5 / 318