값을 누적해야하는 물체가있는 물통이 있습니다. 그것은 RwLock
에 의해 보호 받고 있습니다. 따라서 쓰기 잠금을 유지합니다. 프로세스 기간 동안 단일 쓰기 잠금을 유지하려고합니다. 내 예를 들어 고정 데이터에 운영하고 있으므로 전혀 RwLock
을 필요로하지 보인다빌린 변수를 바꾸는 것
use std::sync::RwLock;
fn main() {
let locked = RwLock::new(Vec::<u32>::new());
// this is the entry point for real-world code
let mut writer = locked.write().unwrap();
// copy into 'locked' until it is full (has 4 items)
for v in 0..100 {
if writer.len() > 4 {
// discard 'writer' and 'locked', create anew
locked = RwLock::new(Vec::<u32>::new());
writer = locked.write().unwrap();
}
writer.push(v);
}
}
있지만, 실제 코드는 "실제 코드"에 입력하고 경계에 반드시 종료 것 : 예를 들어
locked
의 "full"이됩니다.
borrow-checker를 동의하지 않고 필요한 경우 새로운 locked
및 writer
개체를 어떻게 만듭니 까?
왜 주위에 벡터와 자물쇠를 버려야하는지 모르겠습니다. 왜 그 안에있는 모든 데이터를 버리기 위해 크기를 0으로 변경하지 않습니까? –
귀하의 면책 조항을 볼 수는 있지만 귀하의 프로그램을 이해할 수 없습니다. 전체 프로그램의 지속 기간 동안 라이터 잠금 장치를 가지고 있으면 독자 잠금을 얻을 수 없기 때문에 다중 스레드에 대한 가능성은 없습니다. – Shepmaster