Concurrency 如何在Rust中的多个线程之间共享结构的不可变引用?
我有一个结构,我想作为多个线程之间的不可变引用共享它。 我使用“Arc”来实现这一点,但为了让Arc工作,我必须为我的结构实现发送和同步特性。 这就是问题所在,铁锈书中写道,手动实现发送和同步是不安全的 解决这个问题的办法是什么 有没有其他方法可以在多个线程之间共享一个不可变引用?并且在安全的情况下由编译器自动实现。两份文件均说明: 当编译器确定此特性是适当的时,它会自动实现 包含有关类型Concurrency 如何在Rust中的多个线程之间共享结构的不可变引用?,concurrency,rust,immutability,shared-memory,unsafe,Concurrency,Rust,Immutability,Shared Memory,Unsafe,我有一个结构,我想作为多个线程之间的不可变引用共享它。 我使用“Arc”来实现这一点,但为了让Arc工作,我必须为我的结构实现发送和同步特性。 这就是问题所在,铁锈书中写道,手动实现发送和同步是不安全的 解决这个问题的办法是什么 有没有其他方法可以在多个线程之间共享一个不可变引用?并且在安全的情况下由编译器自动实现。两份文件均说明: 当编译器确定此特性是适当的时,它会自动实现 包含有关类型发送或同步的更多详细信息,但大多数类型都是发送,除了: 主要例外情况包括: 原始指针既不是Send也不是S
发送
或同步
的更多详细信息,但大多数类型都是发送
,除了:
主要例外情况包括:
- 原始指针既不是
也不是Send
(因为它们没有安全防护装置)Sync
不是unsafectell
(因此Sync
和Cell
不是)RefCell
不是Rc
或Send
(因为refcount是共享和不同步的)Sync
Send
字段的类型也会自动Send
。因此,您只需要自定义结构只包含Send
字段,就可以了