我有一种情况,线程1写入套接字,线程2从套接字读取。我过去通过split()
进行了此操作,它将消耗TcpStream并返回ReadHalf / WriteHalf,然后可以将其整齐地传递给线程。我在1.39.0(tokio-0.2.0-alpha.6)上遇到问题。
现在它已更改为pub fn split(&mut self) -> (ReadHalf, WriteHalf)
。这不允许将ReadHalf / WriteHalf(将生命周期绑定到流)传递到单独的线程,而不会遇到混乱的生命周期问题
普通的read()/write()
变体采用&mut self
,这使得无法进行并发读写。
有趣的是,UdpSocket仍然有旧方法(pub fn split(self) -> (UdpSocketRecvHalf, UdpSocketSendHalf)
)
还发现了这个相关的(未解决的)线程:https://github.com/tokio-rs/tokio/issues/1108。不确定使用TcpStream是否可能。
在这里感谢任何建议。
谢谢。