Rust Tokio 并发与异步 I/O 实战基本示例use tokio::{net::TcpListener, io::{AsyncReadExt, AsyncWriteExt}};

#[tokio::main]

async fn main() -> anyhow::Result<()> {

let listener = TcpListener::bind("127.0.0.1:8080").await?;

loop {

let (mut sock, _) = listener.accept().await?;

tokio::spawn(async move {

let mut buf = [0u8; 1024];

if let Ok(n) = sock.read(&mut buf).await {

let _ = sock.write_all(&buf[..n]).await;

}

});

}

}

select! 与超时use tokio::{time::{timeout, Duration}, select};

async fn work() {

// ...

}

async fn run() {

let t = timeout(Duration::from_secs(2), work());

select! {

_ = t => { /* 正常完成或超时 */ },

_ = tokio::signal::ctrl_c() => { /* 优雅退出 */ },

}

}

连接与背压使用 `TcpStream::set_nodelay(false)` 保持 Nagle,视场景选择通过限流与队列控制避免写放大与背压失控监控与测试`cargo bench` 与 `tokio-console` 观察任务与资源总结Tokio 提供高效的任务调度与 I/O 原语,通过合理的超时与背压策略,可构建稳定的并发服务。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部