2 个版本
0.1.1 | 2023 年 6 月 3 日 |
---|---|
0.1.0 | 2023 年 6 月 3 日 |
#13 在 #已执行
9KB
78 行
将需要执行的函数作为闭包传递到子线程中循环执行,
将需要执行的函数作为闭包传递到子线程中进行循环执行,
循环的同时有一个时间循环的线程配套,
同时还有一个时间循环线程与之配合,
需要执行的函数每次执行都会更新一次执行时间
需要执行的函数每次执行后都会更新一次执行时间
时间循环函数每次sleep时间为time_check,如果执行时间距离上次执行时间大于四倍time_check则退出循环
时间循环函数每次sleep时间为time_check,如果执行时间大于上次执行时间的四倍则退出循环
注意如果执行的函数中有阻塞(例如io输入),会发生时间循环子线程退出,函数执行循环子线程将一直等待直到有IO输入或者主函数退出
注意:如果执行的函数中有阻塞(例如IO输入),时间循环子线程将退出,函数执行循环子线程将一直等待,直到有IO输入或主函数退出
示例
use std::thread;
use std::time::Duration;
//需要循环一次的函数
//Functions that need to be iterated once
fn text_fn(i:u64) {
let mut buffer = String::new();
std::io::stdin().read_line(&mut buffer).unwrap();
println!("text is {}",buffer);
thread::sleep(Duration::from_secs(i));
}
fn main() {
let time_check = 5;//单位为秒 Unit in seconds
thread::spawn (
move|| {
time_check_loop::loop_time_check(move || {text_fn(1);},time_check);
}
);
loop{
thread::sleep(Duration::new(5,0));
};
}