gpt4 book ai didi

data-structures - 为什么 Vec 有 trait Sync?

转载 作者:行者123 更新时间:2023-11-29 07:52:49 24 4
gpt4 key购买 nike

根据documentation , Vec<T>工具 Sync如果T工具 Sync .它似乎是由某种魔法自动生成的,但我觉得这是违反直觉的,因为向量的简单实现不是线程安全的。

Vec<T>在 Rust 中真的 Sync

最佳答案

实现 Sync意味着一个类型保证对其值的引用可以在线程之间共享,而不会在安全的 Rust 中出现数据竞争的风险。

&Vec<T> 类型的值是不可变的,所以共享它们总是安全的。 Rust 借用检查器已经禁止可变引用与对同一对象的任何其他引用同时存在,因此这会作为 Rust 借用规则的结果自动工作。没有什么可以改变 Vec虽然它是共享的,但数据竞争是不可能的。当然,如果unsafe代码出现在画面中,然后保证就消失了。

大多数类型是Sync实际上。那些不是(例如 RefCell )的往往具有内部可变性,或者以其他方式管理编译时借用检查器控制之外的引用。

关于data-structures - 为什么 Vec 有 trait Sync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52132497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com