실용주의 프로그래머 - 2022.03.30 - 6장.동시성 Concurrency

moontag·2022년 3월 30일
0

북클럽 TIL

목록 보기
6/12

DAY 13 (p.267-298 전자책기준)

6장.동시성 Concurrency

📚 오늘 TIL 3줄 요약

  • 모든 일에는 동시성이 있다
  • 공유 상태가 없는 동시성을 위해 액터를 사용하라
  • 👆벽 위에 글자가 있는데.....(칠판)


기억하고 싶은 내용


  • 동시성 : 둘 이상 코드가 실행될때 동시에 실행중인 것처럼 행동하는 것
  • 병렬성 : 실제로 동시에 실행되는 것
  • 모든 일에 동시성이 있다

시간적 결합 temporal coupling 깨트리기

  • 시간이나 순서에 의존하는 시간적 결합을 끊는 방법을 생각해야 한다

  • 동시에 수행할 수 있는데도 동시에 안하는 활동찾아서 병렬성 극대화하기

  • 활동 다이어그램
    동시에 작업할 수 있는 작업흐름을 보여주지만, 동시에 하는 것이 좋은지는 알려주지 않는다.

  • 동시성 : 소프트웨어 동작 방식

  • 병렬성 : 하드웨어


공유 상태는 틀린 상태

Q 케이크는 1개인데 종업원 2명이 동시에 각각 손님에게 있다고 했을 시 1명은 못사가는 경우가 있는데 어떻게 하면 될까?

  • 세마포어 및 다른 상호 배제 방법
    semaphore - 한번에 한 사람만 가질 수 있는 무언가.
    진열장을 열기 전에 세마포어 작업을 추가하는 것. lock/unlock
  • 여러 리소스와 트랜잭션
  • 트랜잭션 없는 갱신
  • 공유 리소스에 독점적으로 접근해주는 라이브러리
    mutex, monitor, 세마포어
  • 리소스를 공유하는 환경에선 동시성은 어렵다

액터와 프로세스

  • 액터 : 비공개 지역 State가진 독립적인 가상 처리 장치
    액터가 잠자고 있을 때 우편함에 메시지 도착하면 깨어나서 처리하고, 처리끝나면 다른 메시지 처리하고, 비어있으면 다시 잠든다.

  • 프로세스 : 일반적 가상 처리기
    운영체제가 동시성 지원하기 위해 구현한다

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

  • Erlang 언어와 런타임은 액터 구현의 좋은 사례


칠판

Q. 살인사건의 단서를 찾기 위해 칠판에 여러 형사들이 붙인 증거와 정보

  • 칠판시스템 : Linda, javaSpaces, T Spaces
  • 칠판으로 작업 흐름을 조율하라
  • 메시징 시스템 ex) 카프카, NATS
  • 하지만 간단하지가 않고 비용이 따른다



소감

동시성에 대한 새로운 개념을 알게 됐다. 설계를 짤때 참고를 해봐야겠다. 그리고 액터 부분은 아직 현실적으로 잘 모르겠다...



궁금한 내용, 잘 이해되지 않는 내용은?

  • 액터 p.282
  • p.296



오늘 읽은 다른 사람의 TIL

profile
터벅터벅 나의 개발 일상

0개의 댓글