Hello
I wrote the following code
use tokio::time::{sleep, Duration};
use tokio::sync::Mutex;
use std::sync::Arc;
use reqwest;
use std::time::Instant;
#[tokio::main]
async fn main() {
let totalreqs = Arc::new(Mutex::new(0));
let reqs = Arc::new(Mutex::new(0));
let totalreqs_clone = Arc::clone(&totalreqs);
let reqs_clone = Arc::clone(&reqs);
tokio::spawn(async move {
let start = Instant::now();
loop {
sleep(Duration::from_secs(1)).await;
let mut totalreqs = totalreqs_clone.lock().await;
let mut reqs = reqs_clone.lock().await;
*totalreqs += *reqs;
print!(
"reqs/sec: {} average reqs/sec: {} total: {} \r",
*reqs,
*totalreqs as f64 / start.elapsed().as_secs_f64(),
*totalreqs
);
*reqs = 0;
}
});
for _ in 0..500 {
let reqs_clone = Arc::clone(&reqs);
tokio::spawn(async move {
loop {
let resp = reqwest::get("http://ipinfo.io/ip").await;
if let Ok(resp) = resp {
if resp.status().is_success() {
let mut reqs = reqs_clone.lock().await;
*reqs += 1;
}
}
}
});
}
tokio::signal::ctrl_c().await.unwrap();
}
But its tooo slow that it only updates ever like 5 seconds or more
How to take advantage of whole cpu when running it
Should i use std threads
Thanks