另一个想法是生成一个“控制器”线程
每个插座有一根线。每个线程都拥有套接字,并有一个通道将数据发送回控制器。控制器将拥有一个
Vec
发送到每个线程的通道数。当一个线程接收到数据时,您将其发送给控制器,控制器复制数据并将其发送回每个工作线程。您可以将数据包装在
Arc
这将所有权完全转移到单个线程中,这应该可以避免您遇到的问题。
你也可以考虑
Tokio
,这应该允许您执行类似的操作,但不需要在1-1映射中生成线程。
Mutex
因为这将锁定其他线程的访问
您可以尝试不同的锁定机制,例如
RwLock
因为
TcpStream
无法克隆
TcpStream::try_clone