关于在 Rust 中使用 tokio 的 `spawn_blocking` 进行 CPU 绑定处理的工作线程

问题描述 投票:0回答:0

我目前正在开发一个程序,同时执行CPU-bound和I/O-bound进程,我计划使用tokio来高效执行I/O-bound进程。 对于受 CPU 限制的进程,我想创建一些与 CPU 上的内核数量相等的线程,并将它们用作工作进程来执行这些进程。此外,tokio 还提供了一个名为 spawn_blocking 的函数,用于在单独的独立线程中执行阻塞进程。通过将使用此函数可以创建的最大线程数设置为 CPU 内核数,我相信我可以实现在工作线程上运行 CPU 绑定进程的目标。 专家如何看待这种方法?

我还想出了一个想法,使用 rayon 库来制作线程池并在其上运行 tokio 运行时和工作线程。

我现在推荐使用 spawn_blocking 来实现。它似乎有效,但我不确定它在性能方面的表现如何。 我想知道的是,这是否是一个好方法,以及让 CPU 弹跳到人造丝库是否更好。

asynchronous rust
© www.soinside.com 2019 - 2024. All rights reserved.