在task
文档中,有一节讨论如何在异步中调用阻塞代码,以及如何避免这种调用,以免过多地阻塞异步线程(https://docs.rs/tokio/1.21.2/tokio/task/index.html#blocking-and-yielding)。
它还讨论了如何将tokio::task::spawn_blocking
用于这些任务,但我想知道在什么时候建议将工作发送到不同的线程?我目前正在编写一个程序,它可以恢复大量ecdsa签名,每条消息大约需要100微秒,所有这些都是在做大量网络IO时使用的。作为一个具体的例子,这是否足以使用像spawn_blocking
这样的东西
发布于 2022-11-23 13:49:09
Alice ( Tokio之一)在异步代码阻塞方面有一个很好的博客帖子。
你的问题的一个关键部分是:
为了给出时间有多长的感觉,一个好的经验法则是每个.await之间的时间不超过10到100微秒。也就是说,这取决于您正在编写的应用程序的类型。
考虑到您在每条消息中花费100微秒,我认为您可能会达到这样的程度:移动到另一个线程是正确的选择。
文章还给出了如何将工作转移到不同线程上的经验规则:
spawn_blocking
。rayon
)。https://stackoverflow.com/questions/74547541
复制相似问题