mirror of
https://github.com/rust-lang-cn/book-cn.git
synced 2025-01-23 07:20:20 +08:00
parent
844a5de648
commit
13c8cc4f18
@ -86,12 +86,14 @@
|
||||
|
||||
防止同一时间对同一数据进行多个可变引用的限制允许可变性,不过是以一种受限制的方式允许。新 Rustacean 们经常难以适应这一点,因为大部分语言中变量任何时候都是可变的。
|
||||
|
||||
这个限制的好处是 Rust 可以在编译时就避免数据竞争。**数据竞争**(*data race*)类似于竞态条件,它可由这三个行为造成:
|
||||
这个限制的好处是 Rust 可以在编译时就避免数据竞争。**数据竞争**(*data race*)类似于竞态条件,它由这三个行为造成:
|
||||
|
||||
* 两个或更多指针同时访问同一数据。
|
||||
* 至少有一个指针被用来写入数据。
|
||||
* 没有同步数据访问的机制。
|
||||
|
||||
> 译注:以上三个行为同时发生才会造成数据竞争,而不是单一行为。
|
||||
|
||||
数据竞争会导致未定义行为,难以在运行时追踪,并且难以诊断和修复;Rust 避免了这种情况的发生,因为它甚至不会编译存在数据竞争的代码!
|
||||
|
||||
一如既往,可以使用大括号来创建一个新的作用域,以允许拥有多个可变引用,只是不能 **同时** 拥有:
|
||||
|
Loading…
Reference in New Issue
Block a user