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 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部