Community

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

← Go back
6장. 동시성
#pragmatic
2년 전
641

TIL (Today I Learned) 날짜

2022. 05. 24

오늘 읽은 범위

6장. 동시성

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

- 동시성: 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것! / 동시성을 얻으려면 실행 중에 코드의 다른 부분으로 실행을 전환할 수 있는 환경에서 코드를 구동해야 한다. (파이버, 스레드, 프로세스 등) / 즉, 소프트웨어 동작 방식

- 병렬성: 실제로 동시에 실행되는 것! / 병렬성을 얻으려면 두 가지 일을 동시에 할 수 있는 하드웨어가 필요하다. (CPU 하나에 있는 여러 개의 코어 or 컴퓨터 한 대에 있는 여러 CPU or 네트워크로 연결된 여러 대의 컴퓨터) / 즉, 하드웨어가 하는 방식

- 동시에 수행할 수 있는데도 아직 동시에 하고 있지 않은 활동들을 찾아내서 병렬성을 극대화할 수 있다.

- 가장 이상적인 것은 비교적 독립적인 부분 작업들이다. 다른 부분 작업을 기다릴 필요 없이 진행할 수 있으면 좋다. 일반적인 형태는 커다란 작업을 독립적인 부분들로 쪼개서 병렬로 각각 처리한 다음, 결과를 합치는 것이다.

- 세마포어: 단순히 한 번에 한 사람만이 가질 수 있는 무언가다.

- 제어를 중앙으로 집중시키자!

- 불규칙한 실패는 동시성 문제인 경우가 많다.

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

- 프로세스: 본래 더 일반적인 가상 처리기

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

- 동시에 실행되는 작업을 구현할 때 액터를 사용하라.

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

- 솔직히 지금 보고 있는 책은 20주년 개정판이 아닌 이전 책이기 때문에 이번 챕터인 6장이 없다.

- 하지만 챕터 앞, 뒤 로 동시성을 다루고 있기 때문에 이번 챕터는 여러 TIL를 보면서 핵심적이 내용만 발취해 왔다.

- 동시성 이란 주제는 이전에도 지금도 앞으로도 정말 중요한 이슈이며, 그만큼 어려운 주제인 것 같다.

- 지금 글을 쓰고 있는 나도 귀로는 음악을 들으면서 손으로는 타이핑을 치고 있으며, 동시에 많은 일을 하곤 하는데...

- 아무리 성능좋은 하드웨어를 가지고 있다 해도, 병렬처리가 안되는 소프트웨어가 있다면 아무런 의미가 없을 것이다.

- 동시에 뭔가를 할 수 있게 하는 것, 하지만 그만큼 어렵고 문제도 항상 많다는 것을 인지하며, 더 배우고 익혀야 겠다.