是否into_inner()
返回此示例程序中的所有轻松写入?如果是这样,哪个概念可以保证这一点?
extern crate crossbeam;
use std::sync::atomic::{AtomicUsize, Ordering};
fn main() {
let thread_count = 10;
let increments_per_thread = 100000;
let i = AtomicUsize::new(0);
crossbeam::scope(|scope| {
for _ in 0..thread_count {
scope.spawn(|| {
for _ in 0..increments_per_thread {
i.fetch_add(1, Ordering::Relaxed);
}
});
}
});
println!(
"Result of {}*{} increments: {}",
thread_count,
increments_per_thread,
i.into_inner()
);
}
(https://play.rust-lang.org/?gist=96f49f8eb31a6788b970cf20ec94f800&version=stable)
我知道横梁保证所有线程都已完成,并且由于所有权回到主线程,我也知道不会有未完成的借用,但在我看来,仍然可能有未完成的未决写入,如果不是CPU,然后在缓存中。
into_inner()
哪个概念保证在调用时所有写入都完成并且所有缓存都同步回主线程?是否有可能丢失写入?