[Rust 공식문서 한국어 정리] 134. Rust Arc<T> 가이드
[Rust 공식문서 한국어 정리] 134. Rust Arc 가이드
원문 제목: Struct std::sync::Arc
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Arc가 제공하는 다중 스레드 참조 카운팅 스마트 포인터를 상세히 다룹니다.
Arc의 원자적 참조 카운팅 메커니즘과 스레드 안전성을 학습합니다.
Arc와 Rc의 차이, 그리고 Arc가 Send와 Sync인 이유를 정리합니다.
Arc::clone, Arc::strong_count, Weak 등 고급 기능을 설명합니다.
Arc>와 Arc> 패턴으로 스레드 간 가변 공유를 구현하는 방법을 다룹니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① Arc — 다중 스레드 참조 카운팅 스마트 포인터
② 원자적 참조 카운트 — 스레드 안전한 카운트 증감
③ Send + Sync — T가 Send + Sync이면 Arc도 Send + Sync
④ Arc> — 스레드 간 안전한 가변 공유 패턴
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Arc는 다중 스레드 환경에서 데이터를 안전하게 공유할 수 있는 스마트 포인터입니다.
Arc는 Atomic Reference Counting의 약자입니다.
참조 카운트의 증감이 원자적 연산으로 수행되어 스레드 간 안전합니다.
Arc::new(value)로 데이터를 힙에 할당합니다.
Arc::clone(&arc)는 참조 카운트를 원자적으로 증가시킵니다.
Arc가 Drop될 때 참조 카운트가 원자적으로 감소하고 0이 되면 메모리를 해제합니다.
Arc는 T가 Send + Sync일 때 Send + Sync입니다.
따라서 스레드 간에 Arc를 이동하고 공유할 수 있습니다.
Arc>는 스레드 간 안전한 가변 공유의 가장 일반적인 패턴입니다.
Mutex는 내부 가변성을 제공하여 &Arc>를 통해 값을 수정할 수 있습니다.
RwLock도 유사하게 읽기/쓰기 잠금을 제공합니다.
Arc::strong_count(&arc)로 현재 강한 참조 카운트를 확인합니다.
Arc::weak_count는 약한 참조 카운트를 반환합니다.
Arc::downgrade는 Weak를 생성하며 순환 참조를 방지합니다.
Weak::upgrade는 Option>로 복원합니다.
Arc는 Rc보다 원자적 연산 오버헤드가 있지만 스레드 안전성을 제공합니다.
단일 스레드에서는 Rc를 사용하고 스레드가 필요할 때만 Arc를 사용하는 것이 효율적입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
스레드 풀에서 공유 데이터를 Arc로 여러 스레드에 분배합니다.
Arc>로 스레드 간 안전한 상태 공유를 구현합니다.
Arc>로 읽기가 많은 데이터의 동시 읽기를 최적화합니다.
그래프의 공유 노드를 Arc로 표현하고 순환은 Weak로 끊습니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Arc는 다중 스레드 참조 카운팅으로 안전한 데이터 공유를 구현합니다.
원자적 연산으로 스레드 안전성을 보장하며 Rc보다 약간의 오버헤드가 있습니다.
Arc>는 스레드 간 가변 공유의 표준 패턴입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/std/sync/struct.Arc.html
Arc Methods: https://doc.rust-lang.org/std/sync/struct.Arc.html
#Rust #Arc #원자적참조카운팅 #스레드안전 #번역

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30