/Concurrency_in_Go

go 동시성 프로그래밍 스터디

Concurrency_in_go

기간(미정)

  • 일정 : 2024.01.04 ~ 2024.??.?? (총 10주 예상)
  • 매주 목요일 8시

참가 인원(미정)

코엔 승렬 민기
코엔 깃허브 승렬 깃허브 민기 깃허브

진행 방식(미정)

  • 매주 30페이지씩 읽어옵니다. 매주 스터디 종료시에 다음주 읽어올 분량(약 30p)을 정합니다.
  • 매주 2~3명이 랜덤으로 발표하게 됩니다.
  • 발표 자료는 발표 전 까지 GitHub 저장소에 Pull Request로 올려주세요.
  • 파일명은 해당 week에 이름.md 으로 만들어주세요.
  • 발표시간은 10~15분 내외로 합니다.
  • 본인이 이해 하시되, (혹은 이해 못하겠으면 오셔서 질문해주셔도 됩니다!) 요점만 전달해주세요.
    • 발표 자료에 큰 힘을 쏟지 않으셔도 된다는 말씀을 드립니다.

단순 책 읽기 및 전달하기가 아닌, 위와 같이 생각을 나누는 스터디가 되는 것이 더 좋은 방향이라고 판단하여, 스터디의 진행 방향을 개선해보기로 했습니다.

스터디 불참

  • 벌금제도 운영보다는 3회 이상 무단 불참 시 스터디에서 제외
  • 패널티가 없는 불참
    • 이직 및 취업 준비생의 해당 주 면접(과제)준비를 하는 경우
    • 야근, 회식 등
    • 집안 사정
    • 건강 문제
  • 패널티가 있는 불참
    • 개인적인 약속
    • 자다가 못나오는 경우
    • 이외 상식선에서 허용되지 않는 기타 사유 등

목차

1장. 동시성 소개 21p
__무어의 법칙, 웹 스케일, 그리고 혼란 22p
__동시성이 어려운 이유 25p
____레이스 컨디션 25p
____원자성 27p
____메모리 접근 동기화 30p
__데드락, 라이브락, 기아 상태 33p
____데드락 33p
____라이브락 37p
____기아 상태 40p
__동시실행 안전성 판단 43p
__복잡성 속의 단순함

2장. 코드 모델링: 순차적인 프로세스간의 통신
__동시성과 병렬성의 차이
__CSP란 무엇인가?
__동시성을 지원하는 언어의 장점
__Go의 동시성에 대한 철학

3장. Go의 동시성 구성 요소 __고루틴
__sync 패키지
____WaitGroup
____Mutex와 RWMutex
____Cond
____Once
____Pool
__채널
__select 구문
__GOMAXPROCS 레버
__결론

4장. Go의 동시성 패턴
__제한
__for-select 루프
__고루틴 누수 방지
__or-채널
__에러 처리
__파이프라인
__파이프라인 구축의 모범 사례
____몇몇 유용한 생성기
__팬 아웃, 팬 인
__or-done 채널
__tee 채널
__bridge 채널
__대기열 사용
__context 패키지
__요약

5장. 확장에서의 동시성
__에러 전파
__시간 초과 및 취소
__복제된 요청
__속도 제한
__비정상 고루틴의 치료
__요약

6장. 고루틴과 고 런타임
__작업 가로채기
____작업 또는 연속 가로채기
__이 모든 것을 개발자에게 보여주는 방법
__결론

부록
__고루틴 에러 분석
__레이스 탐지
__pprof

스터디 진행 상황

  • 1주차 : 1장 전체