3 ms·
Some commenters mention Rust has compile-time data-race checking. Is this correct? From what I did understand it will only enforce a mutex to be locked before
by clktmr 7y ago
Some commenters mention Rust has compile-time data-race checking. Is this correct? From what I did understand it will only enforce a mutex to be locked before you can access specific data. However if there is no mutex, data-races won't be detected at compile time?
- steveklabnik 7y agoIt is correct. Rust prevents all data races at compile time, unless you write incorrect unsafe code. This is why people try to write as little unsafe as possible. This has nothing to do with Mutexes; mutexes are provided by the standard library and the language knows nothing specific about them.
- clktmr 7y agoI understand. It is actually kind of easy to comprehend by remembering the borrow checker will only allow one single mutable reference at a time.
- yangl1996 7y agoRust compiler forbids multiple threads to access the same memory location not protected by a Mutex.
- hexaga 7y agoThat is, only when said memory location is accessed mutably. Immutable references are perfectly ok to follow concurrently.