ExpertiDict

Rust · Avançado · Inglês · Técnico

data race

/ˈdeɪtə reɪs/substantivo

Acesso simultâneo de duas threads ao mesmo dado, com ao menos uma escrita, sem sincronização. O Rust seguro elimina data races na compilação, com Send, Sync e empréstimos.

Onde usar

É citado como o motivo de Rust ser seguro para concorrência. Em review, o compilador já barra o caso comum.

Em código

// compartilhar &mut entre threads não compila
let mut n = 0;
// std::thread::spawn(|| n += 1);
// erro: a closure pode sobreviver a n
// com Mutex ou atômicos, compila
let m = std::sync::Mutex::new(0);
*m.lock().unwrap() += 1;

Exemplos

Safe Rust can't have a data race.

Rust seguro não pode ter data race.

A race condition is still possible without a data race.

Ainda é possível ter race condition sem data race.

Cuidado

Data race não é o mesmo que race condition: a ordem lógica das operações ainda pode estar errada, mesmo sem corrida de dados.

Sinônimos

corrida de dados

Veja também

Todos os termos de Rust