如何将 Tokio 线程池限制为一定数量的本机线程?

Geo*_*rge 2 multithreading asynchronous rust mio rust-tokio

将 Tokio (v 0.1.11)n线程池限制为OS 本机线程的正确方法是什么,其中n是任意数量,最好在运行时配置?

据我所知,可以使用 usingtokio_current_thread::block_on_all代替tokio::runtokio_current_thread::spawn代替在单线程模式下使用 Tokiotokio::spawn

我想要一个类似的解决方案,但对于n >= 1.

Sve*_*ach 5

您可以Runtime使用tokio::runtime::Builder. builder 提供了一种core_threads()方法,可以用来配置线程的数量,例如

let mut rt = runtime::Builder::new()
    .core_threads(4)
    .build()
    .unwrap();
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用rt.spawn(some_future)在此运行时上运行未来。

  • 如果您使用当前的线程执行器,我认为您对未来的限制较少,因为它们不需要“发送”。使用线程执行器,即使您只使用单个线程,所有 future 都需要“发送”。(我可能混淆了术语,但大致是这样的。) (2认同)