본문 바로가기
Choi solyi/책

실용주의 프로그래머 Assignment #10 - 6장. 동시성

by SOLYI 2022. 3. 29.

오늘 TIL 3줄 요약

  • 동시성과 병렬성
  • 공유 상태 없는 동시성을 위하여 액터를 사용하라.
  • 칠판 시스템

TIL (Today I Learned) 날짜

2022.03.29

 

오늘 읽은 범위

6장. 동시성

 

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

  • 동시성(Concurrency): 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것
  • 병렬성(Parallelism): 실제로 동시에 실행되는것
  • 모든 일에는 동시성이 있다. 여러분의 애플리케이션이 실제 세상을 다루기 원한다면 동시성은 필수다. 세상은 비동기적이기 때문이다.
  • 동시성이나 병렬성을 지원하는 코드를 쓰는 건 왜 어려울까? 한가지 이유는 우리가 프로그래밍을 순차적 시스템으로 배워서다. 순차적으로 사용할 땐 비교적 안전하지만, 동시에 두가지 일이 일어날 수 있으면 골칫거리로 변해서다. 가장 큰 문제는 공유상태다.
  • 액터 모델은 프로세스들이 독립적으로 수행되며 서로 데이터를 공유하지 않는다. 대신 채널을 통해 잘 정의된 단순한 의미론을 사용하여 의사소통한다. 언제나 동시성을 띤다
  • 동시에 일어나도 되는 게 뭐고, 반드시 순서대로 일어나야 하는 건 어떤 것인지 찾아내길 원한다. '활동 다이어그램' 같은 표기법을 사용해서 작업 흐름을 기록하는 것이 한 방법이다.
  • 공유 상태는 틀린 상태다. (레스토랑의 애플파이)
  • 공유 리소스에 독점적으로 접근하는 것을 도와주는 라이브러리가 있다. 상호 배제를 의미하는 뮤텍스mutex, 모니터, 세마포어 등..
  • 칠판에는 누구나 수집한 사실을 붙이고 누군가는 떼어 낸다. 사실을 조합하거나 처리할 수도 있고 더 많은 정보를 덧붙일 수도 있다. 칠판은 사람들이 서서히 결론에 도달하도록 돕는다.
  • 칠판 시스템은 법적 요구 사항을 캡슐화하는 규칙 엔진과 함께 사용하면 우아하게 해결할 수 있다. 데이터의 도착 순서는 이제 상관없다. 어떤 사실이 칠판에 올라가면 적절한 규칙이 발동되도록 하면 된다.

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

  • JAVA에서 배웠던 트랙잭션 처리를 nestjs에서 어떻게 처리 해야하는지 공부 해야할것 같다.
  • 순차적으로 배워왔어도 동시성과 병렬성을 고려하며 사고할 수 있어야 할 것 같다.
  • 아침에 일어나서 출근하기 까지의 행동들을 행동 다이어그램으로 그려보고 싶다. (그럼 조금 더 효율적으로 시간을 쓸 수 있겠지?)

 

 

반응형