Rust · Intermediário · Inglês · Técnico
atomic
Tipos como AtomicUsize e AtomicBool, cujas operações são indivisíveis entre threads sem uso de trava. Cada operação recebe um Ordering que define a visibilidade da memória.
Onde usar
Aparece em contadores, flags de parada e estruturas lock-free. Pela facilidade de errar a ordem de memória, na dúvida use SeqCst ou um Mutex.
Em código
use std::sync::atomic::Ordering::Relaxed;
use std::sync::atomic::AtomicUsize;
static N: AtomicUsize = AtomicUsize::new(0);
N.fetch_add(1, Relaxed);
println!("{}", N.load(Relaxed));Exemplos
Use an atomic counter instead of a mutex.
Use um contador atômico em vez de um mutex.
fetch_add is a single atomic step.
O fetch_add é um único passo atômico.
Cuidado
Atômico não torna uma sequência de operações atômica: ler e depois escrever em dois passos ainda tem corrida lógica.
Sinônimos
tipo atômico
Origem
Do grego atomos, 'indivisível'.