1

我想围绕来自第三方库的对象创建一个包装器,然后通过 Tokio 将源自 TCP 套接字的请求分派给它。在 Tokio 有没有一种惯用的方法来处理这个问题?


从概念上讲,界面如下所示:

impl MyObject {
    fn handle_requestA(&self, r: RequestA) -> ResponseA,
    fn handle_requestB(&self, r: RequestB) -> ResponseB,
    // ...
}

有几点需要注意:

  1. 该对象不是线程安全的,因此需要对请求进行序列化
  2. 请求处理程序可能需要很长时间,因此在与 Tokio 事件循环的其余部分相同的线程上运行它们可能不是一个好主意

我可以启动一个常规的操作系统线程并通过队列提供它,但在这种情况下,我需要将不同类型的请求多路复用到它上面(然后将响应多路分解回套接字)。是否有一些我可以重复使用的现有管道?

一个延伸目标是在它们之间有一个MyObjects 池和负载平衡请求。

4

0 回答 0