< p > 在tokio 0.2中,是否有一种方法可以使用属性
#[tokio::main]
指定单线程运行时?文档中似乎没有这方面的示例。
编辑:我想找到一种设置tokio运行时的方法,使得rustc
知道tokio:spawn()
不会启动新线程。
#[tokio::main]
指定单线程运行时?文档中似乎没有这方面的示例。
编辑:我想找到一种设置tokio运行时的方法,使得rustc
知道tokio:spawn()
不会启动新线程。
tokio::main
的文档显示了它的选项。
通常情况下,我们希望启动当前线程的运行时,所以有一个特殊的选项来实现这个目的:
#[tokio::main(flavor = "current_thread")]
tokio::main
的文档显示了它的选项:
core_threads=n
- 将核心线程设置为n(需要rt-threaded功能)。max_threads=n
- 将最大线程数设置为n(需要rt-core或rt-threaded功能)。
因此:
#[tokio::main(core_threads = 1, max_threads = 1)]
async fn main() {
println!("Hello world");
}
rustc
知道所有任务都在一个线程中,因此无需检查线程安全问题。后来我尝试使用basic_scheduler
的方法,但似乎当我调用tokio::spawn()
时,rustc
仍然认为它是一个新线程。 - user1783732spawn_local
将执行限制在单个线程上。它允许在.await
边界上传递!Send
变量,听起来就像您正在寻找的东西。 - quartzsaber