Stop wasting CPU cycles on infinite loops

This commit is contained in:
Yash Karandikar 2022-06-24 19:32:41 +05:30
parent 74a359061c
commit 34b91eb1e4

View file

@ -13,8 +13,10 @@ async fn main() -> anyhow::Result<()> {
let ports: HashMap<SocketAddr, u16> = toml::from_str(&contents)?; let ports: HashMap<SocketAddr, u16> = toml::from_str(&contents)?;
let mut handles = Vec::with_capacity(ports.len());
for (&saddr, &port) in &ports { for (&saddr, &port) in &ports {
tokio::spawn(async move { let handle = tokio::spawn(async move {
let listener = TcpListener::bind(SocketAddr::new("0.0.0.0".parse()?, port)).await?; let listener = TcpListener::bind(SocketAddr::new("0.0.0.0".parse()?, port)).await?;
loop { loop {
let (stream, _) = listener.accept().await?; let (stream, _) = listener.accept().await?;
@ -30,10 +32,15 @@ async fn main() -> anyhow::Result<()> {
#[allow(unreachable_code)] #[allow(unreachable_code)]
Ok::<(), anyhow::Error>(()) Ok::<(), anyhow::Error>(())
}); });
handles.push(handle);
} }
#[allow(clippy::empty_loop)] for handle in handles {
loop {} handle.await??;
}
Ok(())
} }
async fn proxy(left: TcpStream, right: TcpStream) -> anyhow::Result<()> { async fn proxy(left: TcpStream, right: TcpStream) -> anyhow::Result<()> {