use std::fs::File;
use std::io::{BufRead,BufReader,Write};
use std::sync::{Arc,Mutex,Condvar};
use std::thread;
fn main()
{
let path="text.txt";
let pair=Arc::new((Mutex::new(false),Condvar::new()));
let pair2=pair.clone();
// let mut file=File::create(path);
let write_handle=thread::spawn(move||{
let mut file=File::create(path).expect("create failed");
file.write_all(b"hello mawlan").expect("write failed");
let (lock,cvar)=&*pair2;
let mut stared=lock.lock().unwrap();
*stared=true;
cvar.notify_one();
});
// write_handle.join().unwrap();
let pair3=pair.clone();
let read_handle=thread::spawn(move||{
let (lock,cvar)=&*pair3;
let mut stared=lock.lock().unwrap();
while !*stared{
stared=cvar.wait(stared).unwrap();
}
let file=File::open(path).expect("open failed");
let reader=BufReader::new(file);
for line in reader.lines()
{
println!("{}",line.unwrap());
}
});
read_handle.join().unwrap();
write_handle.join().unwrap();
}
rust文件io读写
最新推荐文章于 2024-08-15 15:54:59 发布