최고의 성능, 최적의 안전성
러스트가 선도하는 동시성 프로그래밍의 미래
러스트는 안전성, 우수한 성능, 간결한 문법, 비동기 프로그래밍 지원 등 현대적인 프로그래밍 환경에 최적화된 언어로 꼽힙니다. 비록 러스트가 학습하기 어려운 언어이지만, 여러 해 동안 개발자들로부터 큰 주목을 받고 있는 이유이기도 합니다. 더불어 마이크로소프트, 구글, 아마존 같은 글로벌 IT 기업들에서 러스트를 적극적으로 활용하고 있습니다. 현재 인프라 환경은 멀티 코어 프로세서의 보편화로 동시성과 병렬성이 중요해지면서 그 중요도는 지금보다 더 높아질 것이고, 러스트는 미래의 언어가 될 것입니다.
이 책은 러스트의 안전성과 빠른 속도라는 강점을 최대한 활용하는 방법을 소개합니다. 특히 러스트의 메모리 모델을 중점으로 다루며, Arc나 Mutex와 같은 동시성 도구가 어떻게 동작하는지를 다양한 예제 코드와 함께 자세히 설명합니다. 이를 통해 독자는 고수준의 실무 경험을 쌓을 수 있으며, 러스트를 활용한 효과적인 동시성 프로그래밍에 대한 이해를 한층 더 향상시킬 수 있습니다. 러스트를 처음 배우려는 개발자뿐만 아니라, 다른 언어에서 동시성 코드를 개발하려는 개발자에게도 유용한 핵심 가이드가 되어줄 것입니다.
CHAPTER 1 러스트 동시성의 기초
1.1 러스트의 스레드
1.2 범위 스레드
1.3 스레드 소유권과 레퍼런스 카운팅
1.4 소유권 대여와 데이터 경합
1.5 내부 가변성
1.6 스레드 안전성: Send와 Sync
1.7 잠금: 뮤텍스와 RwLock
1.8 대기: 파킹과 조건 변수
요점 정리
CHAPTER 2 아토믹
2.1 아토믹한 데이터 load 및 store 연산
2.2 fetch-and-modify 연산
2.3 compare-and-exchange 연산
요점 정리
CHAPTER 3 메모리 순서
3.1 메모리 순서 재정렬과 최적화
3.2 메모리 모델
3.3 happens-before 관계
3.4 느슨한 메모리 순서
3.5 해제 순서와 획득 순서
3.6 소비 순서
3.7 순차적으로 일관된 순서
3.8 펜스
3.9 자주 발생하는 오해
요점 정리
CHAPTER 4 스핀 락 구현해보기
4.1 가장 간단한 구현체
4.2 Unsafe 스핀 락
4.3 잠금 가드를 사용한 안전한 인터페이스
요점 정리
CHAPTER 5 채널 구현해보기
5.1 간단한 뮤텍스 기반 채널
5.2 언세이프 원샷 채널
5.3 런타임 검사를 통한 안전성
5.4 타입을 사용한 안전성
5.5 할당을 피하기 위한 소유권 대여
5.6 차단
요점 정리
CHAPTER 6 Arc 구현해보기
6.1 기본적인 레퍼런스 카운팅
6.2 위크 포인터
6.3 최적화
요점 정리
CHAPTER 7 프로세서 이해하기
7.1 프로세서 명령어
7.2 캐싱
7.3 재정렬
7.4 메모리 순서
요점 정리
CHAPTER 8 운영체제의 기본 요소
8.1 커널 인터페이스
8.2 pOSIX
8.3 리눅스
8.4 맥OS
8.5 윈도우
요점 정리
CHAPTER 9 잠금 구현해보기
9.1 뮤텍스
9.1.1 시스템 콜 피하기
9.1.2 좀 더 최적화해보기
9.1.3 벤치마킹
9.2 조건 변수
9.2.1 시스템 콜 피하기
9.2.2 가짜 깨우기 피하기
9.3 읽기/쓰기 잠금
9.3.1 쓰기 스레드의 무의미한 반복 피하기
9.3.2 쓰기 고갈 피하기
CHAPTER 10 아이디어와 제안
10.1 세마포어
10.2 RcU
10.3 잠금 없는 연결 리스트
10.4 큐 기반 잠금
10.5 parking lot 기반 잠금
10.6 순차 잠금
10.7 교육용 자료
러스트 언어로 안전성과 성능을 동시에 극대화하다
이 책은 동시성을 최대한 활용하여 효율적인 코드를 작성하기 위해 Atomic과 Lock을 중심으로 실무 지식을 제공하는 러스트 핵심 가이드입니다. Atomic과 Lock 연산의 활용법은 물론, Mutex를 사용하여 안전하게 데이터에 접근하는 방법에 대한 핵심 원칙까지 소개합니다. 뿐만 아니라, 동시성 코드에서 중요한 메모리 순서와 관련된 개념을 자세히 설명하고 있어 여러 스레드 간에 데이터를 안전하게 공유하거나 수정하기 위한 Arc와 Mutex에 대한 심층적인 내용도 체계적으로 배워나갈 수 있습니다. 이 책을 통해 동시성 프로그래밍에 가장 최적화된 러스트를 활용하여 다양한 동시성 문제에 유연하게 대응하고 안전한 소프트웨어를 개발하는 데 필요한 기술을 습득하길 바랍니다.
★ 이 책의 내용