首页 > TAG信息列表 > Tokio

rust中的超时处理

自从 tokio 1.0发布以来,rust的异步开发总算大势已定。尽管没达到标准库的速度,依然挡不住大家的热情。看编程排行榜,增加2倍的开发者。 既生瑜何生亮,感觉go就是小号的rust。   不废话了。背景:之前用go开发一个边缘网关的小东东,业余时间做了一大半。后来学了rust,打算练手,用rust重新

【Tokio】TCP 服务器

环境 Time 2022-01-13 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/index.html 之前使用 Mio 实现了一个简单的 TCP 服务器,再使用 Tokio 实现。 练习使用,不可用于生产环境。 示例 main.rs use tokio::io::{AsyncReadExt, AsyncWriteExt, Result};

【Tokio】echo 服务器

环境 Time 2022-01-13 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://tokio.rs/tokio/tutorial/io 示例 main.rs use tokio::net::TcpListener; #[tokio::main] async fn main() -> tokio::io::Result<()> { let listener = TcpListener::bind("127.0.0.1:6379&qu

【Tokio】UDP 服务器

环境 Time 2022-01-13 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/net/struct.UdpSocket.html 之前使用 Mio 实现了一个简单的 UDP 服务器,再使用 Tokio 实现。 练习使用,不可用于生产环境。 示例 main.rs use std::io; use tokio::net::UdpSocket;

【Tokio】优势和劣势

环境 Time 2022-01-13 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://tokio.rs/tokio/tutorial Tokio 是 Rust 编程语言的异步运行时。它提供了编写网络应用程序所需的构建基础。它提供了针对各种系统的灵活性,从具有数十个内核的大型服务器到小型嵌入式设备。 在高层次上,Tokio提供

【Tokio】存储设置的值

环境 Time 2022-01-13 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://tokio.rs/tokio/tutorial/spawning 示例 main.rs use mini_redis::Command::{Get, Set}; use mini_redis::{Command, Connection, Frame}; use std::collections::HashMap; use tokio::net::{TcpListener, TcpS

【Tokio】mini-redis 服务器

环境 Time 2022-01-13 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://tokio.rs/tokio/tutorial/setup 示例 查看版本 C:\Users\jiangbo\work\rust\game>rustc --version rustc 1.57.0 (f1edd0429 2021-11-29) 安装 cargo install mini-redis 启动 mini-redis-server 访问 C:\User

【Tokio】异步超时任务

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/time/index.html 示例 timeout use std::io; use tokio::time::{self, Duration}; #[tokio::main] async fn main() -> io::Result<()> { if let Err(e) = time::timeo

【Tokio】异步任务的返回值

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/task/index.html 示例 正常结果 use std::{io, thread}; #[tokio::main] async fn main() -> io::Result<()> { let result = tokio::spawn(async { println!("

【Tokio】异步休眠任务

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/time/index.html 标准库和 Tokio 都提供了线程休眠函数 sleep,标准库的休眠会挂起线程,不做任何事。而 Tokio 的可以放弃执行当前任务去执行其它任务,线程并不会被挂起。 示例 标准库

【Tokio】异步周期任务

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/time/index.html 示例 interval use std::{io, thread, time::Duration}; use tokio::time::{self, Instant}; #[tokio::main] async fn main() -> io::Result<()> { let

【Tokio】启动和结束回调

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html 在线程启动和结束时,可以定义一个回调。 示例 main.rs use std::{io, thread, time::Duration}; use tokio::runtime::Builder; fn main() -> io::Re

【Tokio】最大空闲时间

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html 对于阻塞任务,Tokio 会新启动一个线程来运行,这个也是在一个线程池中,任务完成后,不会立即销毁。经过空余时间后,还是没有任务,就会进行销毁,默认 10 秒。 示

【Tokio】最大阻塞线程数

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html 对于阻塞任务,Tokio 会新启动一个线程来运行,可以设置启动的最大线程数,默认是 512。 示例 main.rs use std::{io, thread, time::Duration}; use tokio

【Tokio】空闲和运行回调

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html 在线程空闲和运行时,可以定义一个回调。 示例 main.rs use std::{io, thread, time::Duration}; use tokio::runtime::Builder; fn main() -> io::Re

【Tokio】阻塞关闭运行时

环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html shutdown_timeout 方法关闭运行时会阻塞,等待任务完成。参数可以提供最大等待时间,超时将被强制结束。 示例 main.rs use std::{io, thread, time::Dura

【Tokio】非阻塞关闭运行时

环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html shutdown_background 方法可以立即关闭运行时,不会产生阻塞。通常在另一个运行时中调用,避免阻塞。 由于 shutdown_background 不等待任务结束,可能会产

【Tokio】当前线程任务

环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html block_on 方法可以接收一个异步任务,在当前线程中运行并阻塞直到完成。 Runtime::new() 创建的运行时,会有一个主线程和 CPU 逻辑核数相等工作线程。

【Tokio】阻塞线程任务

环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html spawn_blocking 方法可以接收一个闭包,可以是一个阻塞任务。 Tokio 有两种线程。一种给异步任务的核心线程,一种是运行同步任务的阻塞线程。 核心线程

【Tokio】进入运行时上下文

环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html enter 方法可以进入异步运行时的上下文。 示例 main.rs use std::{io, time::Duration}; use tokio::runtime::Runtime; fn main() -> io::Result<(

【Tokio】任务运行句柄

环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html handle 方法返回一个可以执行任务的句柄。 示例 main.rs use std::{io, thread, time::Duration}; use tokio::runtime::Runtime; fn main() -> io:

【Tokio】单线程运行时

环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html 除了可以使用线程池运行时,还可以直接在当前线程运行任务,使用单线程。 示例 main.rs use std::{io, thread, time::Duration}; use tokio::runtime::B

Rust 程序设计语言 web server (tokio)

Rust 程序设计语言 web server 1 web server 源码2 web server (tokio) 1 web server 源码 // src/bin/main.rs use std::fs; use std::io::prelude::*; use std::net::{TcpListener, TcpStream}; use web_server::ThreadPool; fn main() { let listener = TcpLis

Rust网络编程框架-深入理解Tokio中的管道

我们在上文《Rust网络编程框架-Tokio进阶》介绍了async/await和锁的基本用法,并完成了一个Server端的DEMO代码。本文继续来探讨这个话题。 客户端代码DEMO 上文中依靠telnet来触发服务端代码的执行,本文我们将自己实现一个客户端。由于笔者也没有从之前比如GO、JAVA等语言的套路

【Rust日报】2020-11-25 AWS loves Rust

AWS loves Rust随着Rust的知名度不断提高,AWS雇用了Rust和Tokio的提交者,以确保他们有必要的时间和资源来进一步改善Rust。这促使AWS围绕Tokio建立了一个团队,聘请了Sean McArthur,Lucio Franco,Jon Gjengset和Lerche等贡献者。在AWS,我们很高兴能加入这个热情,高效的Rust社区。如果您想帮