[−][src]Function tao_of_rust::ch03::tag_trait::sync_send_trait
pub fn sync_send_trait()
用作标签的trait:Sync / Send
Base usage: error 利用所有权机制化解了一次并发危机
use std::thread; let mut x = vec![1, 2, 3, 4]; thread::spawn(|| { // Error: may outlive borrowed value `x` x.push(1); // 子线程修改x }); x.push(2); // 父线程修改xRun
Base usage: right 使用move关键字,
use std::thread; let mut x = vec![1, 2, 3, 4]; thread::spawn(move || { // x实现了Sync和Send x.push(1); }); //x.push(2); // 父线程不允许修改xRun
Base usage: 未实现Sync和Send的类型示范
use std::thread; use std::rc::Rc; let x = Rc::new(vec![1, 2, 3, 4]); thread::spawn( move || { // Error: std::marker::Send is not satisfied x[1]; });Run