더북(TheBook)

Tokio에서 RwLock(https://docs.rs/tokio/latest/tokio/sync/struct.RwLock.html)을 구현한다. 먼저 질문을 Arc로 캡슐화하여 데이터를 힙에 배치하면 데이터에 대한 포인터를 여럿 가질 수 있다. 또한, 질문 구조를 RwLock으로 래핑하여 동시에 여러 개를 쓰는 것을 방지한다.

코드 4-29 스레드에 안전한 HashMap 만들기

...
use std::sync::Arc;
use tokio::sync::RwLock;
...
#[derive(Clone)]
struct Store {
    questions: Arc<RwLock<HashMap<QuestionId, Question>>>,
}
impl Store {
    fn new() -> Self {
        Store {
            questions: Arc::new(RwLock::new(Self::init())),
        }
    }
    ...
}
...
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.