더북(TheBook)

그러나 어느 쪽도 근본적인 답이 아니다. 첫 번째 답은 메모리를 상당히 오염시킬 것이고 그럼에도 여전히 저장소 내부의 데이터를 변경하지도 못한다. 두 번째는 비동기식 접근 방식에 반하는 것이다.

다행히도 러스트는 이런 문제를 처리할 수 있는 기능을 갖고 있다. 다음을 특히 잘 살펴보자.

Rc<T>

Arc<T>

Rc, Arc 타입은 기본 데이터 구조 T를 힙에 배치하고 스택에 포인터를 생성한다. 그러면 동일한 데이터를 참조하는 해당 포인터의 복사본을 만들 수 있다. Rc는 단일 스레드 시스템에서만 작동하고, Arc는 다중 스레드를 위한 것으로 여러 스레드 간에 데이터를 공유할 수 있다는 것이 이 둘의 차이점이다. 그림 4-3은 Arc를 복제하는 개념과 내부 작동 방식을 보여 준다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.