История изменений
Исправление WatchCat, (текущая версия) :
Народ занимается изобретением велосипедов. Какие-то крейты дополнительные тянуть предлагает, дополнительные треды заводит с каналами. Когда всё как проще:
use std::env;
use std::thread;
use std::time;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
println!( "{} <minutes>", args[0] );
return;
}
let query = u64::from_str_radix( &args[1], 10 ).expect( "Incorrect parameter" );
let sleep_time = time::Duration::from_millis( 500 );
let now = time::Instant::now();
let mut minutes = 0u64;
println!( "Start! {}", query );
loop{
thread::sleep( sleep_time );
let tm = now.elapsed().as_secs() / 60;
if tm >= query {
break;
} else if tm != minutes {
println!( "minutes {}", tm );
minutes = tm;
}
}
println!( "minutes {}", query );
println!( "Stop! {}", query );
}
И самое главное никакого убегания не будет, хоть 100500 минут поставь. Разве что системный таймер навернётся.
На плюсах все примерно так же, попизжа закину.
Исходная версия WatchCat, :
Народ занимается изобретением велосипедов. Какие-то крейты дополнительные тянуть предлагает, дополнительные треды заводит с каналами. Когда всё как проще:
use std::env;
use std::thread;
use std::time;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
println!("{} <minutes>", args[0]);
return;
}
let query = u64::from_str_radix(&args[1], 10).expect("Incorrect parameter");
let sleep_time = time::Duration::from_millis(500);
let now = time::Instant::now();
let mut minutes = 0u64;
println!( "Start! {}", query );
loop{
thread::sleep(sleep_time);
let tm = now.elapsed().as_secs()/60;
if tm >= query {
break;
} else if tm != minutes {
println!("minutes {}",tm);
minutes = tm;
}
}
println!( "Stop! {}", query );
}
И самое главное никакого убегания не будет, хоть 100500 минут поставь. Разве что системный таймер навернётся.
На плюсах все примерно так же, попизжа закину.