我正试图围绕Send + Sync特征进行思考。我得到了背后的直觉Sync- 这是传统的线程安全(如C++)。该对象执行必要的锁定(如果需要,内部可变性),因此线程可以安全地访问它。
但Send部分有点不清楚。我明白为什么事情喜欢Rc的Send只是-对象可以给不同的线程,但非原子操作使线程不安全。
背后的直觉是Send什么?这是否意味着该对象可以被复制/移动到另一个线程上下文中,并且在复制/移动后继续有效?
“Sync但没有Send”的任何示例场景都会真正有帮助。还请指出这种情况下的任何 Rust 库(不过我发现了几个相反的库)
对于(2),我发现一些线程使用带有指向堆栈/线程本地存储上的数据的指针的结构作为示例。但无论如何这些都是不安全的(同步或其他方式)。
我需要确保 TCP 连接的客户端通过特定的 (IP) 接口。标准方法是将bind()套接字连接到IP:0, 之前connect()。
我开始查看tokio::net::TcpStream::connect()和朋友,似乎没有办法做到这一点。我退后一步看了看std::net::TcpStream,里面也没有。
我是否遗漏了什么,或者我需要使用一些较低级别的 API?