在Tokio TcpStream上并发读写

时间:2019-11-16 00:17:37

标签: rust rust-tokio

我有一种情况,线程1写入套接字,线程2从套接字读取。我过去通过split()进行了此操作,它将消耗TcpStream并返回ReadHalf / WriteHalf,然后可以将其整齐地传递给线程。我在1.39.0(tokio-0.2.0-alpha.6)上遇到问题。

  1. 现在它已更改为pub fn split(&mut self) -> (ReadHalf, WriteHalf)。这不允许将ReadHalf / WriteHalf(将生命周期绑定到流)传递到单独的线程,而不会遇到混乱的生命周期问题

  2. 普通的read()/write()变体采用&mut self,这使得无法进行并发读写。

有趣的是,UdpSocket仍然有旧方法(pub fn split(self) -> (UdpSocketRecvHalf, UdpSocketSendHalf)

还发现了这个相关的(未解决的)线程:https://github.com/tokio-rs/tokio/issues/1108。不确定使用TcpStream是否可能。

在这里感谢任何建议。

谢谢。

0 个答案:

没有答案