LINUX.ORG.RU

История изменений

Исправление 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 минут поставь. Разве что системный таймер навернётся.

На плюсах все примерно так же, попизжа закину.