2015-04-16 60 views
1

我是新來的,現在學習Rust,來自Go。我如何實現諸如長時間併發輪詢之類的東西?什麼是Go的範圍time.Tick?

// StartGettingWeather initialize weather getter and setter 
func StartGettingWeather() { 

    // start looping 
    for i := range time.Tick(time.Second * time.Duration(delay)) { 
     _ = i 
     loopCounter++ 
     fmt.Println(time.Now().Format(time.RFC850), " counter: ", loopCounter) 
     mainWeatherGetter() 
    } 
} 

,我會打電話給本功能爲go StartGettingWeather()

+0

曾經有一個計時器在標準,但現在它已被棄用。你可以看看這個箱子的更換:https://github.com/PeterReid/timer。 periodic_ms應該或多或少地像時間一樣工作。挑戰 –

回答

2

鏽線程操作系統線程,他們使用的OS調度器和這樣你就可以thread::sleep_ms效仿這樣的:

use std::thread; 

fn start_getting_weather() { 
    let mut loop_counter = 0; 
    loop { 
     loop_counter += 1; 
     println!("counter: {}", loop_counter); 
     main_weather_getter(); 
     thread::sleep_ms(delay); 
    } 
} 

thread::spawn(move || start_getting_weather()); 
+0

嗨,謝謝你!,它運行良好。我想不應該用這個,再次感謝你。 – Hokutosei