Yan*_*ang 4 thread-safety rust data-structures
根据文档,Vec<T>实现Syncif Timplements Sync.它似乎是由一些魔法自动生成的,但我觉得这是违反直觉的,因为矢量的天真实现不是线程安全的.
真的Vec<T>在Rust Sync吗?
实现Sync意味着类型保证可以在线程之间共享对其值的引用,而没有安全Rust中数据竞争的风险.
类型的值&Vec<T>是不可变的,因此共享它们总是安全的.Rust借用检查器已经禁止可变引用与对同一对象的任何其他引用同时存在,因此这可以作为Rust的借用规则自动运行.没有什么可以Vec在它共享的时候发生变异,因此数据竞争是不可能的.当然,如果unsafe代码进入图片,那么保证就会消失.
Sync事实上大多数类型.那些不(例如RefCell)倾向于具有内部可变性,或以其他方式管理编译时借用检查器控制之外的引用.