Rust · Essencial · Inglês · Técnico
Arc
Ponteiro com contagem atômica de referências, que permite vários donos de um mesmo dado entre threads. Cada clone aumenta o contador, e o valor é liberado ao chegar a zero.
Onde usar
Aparece como Arc<Mutex<T>> para estado compartilhado e mutável. Em code review, a dúvida é se precisa mesmo de vários donos ou se um canal resolveria.
Em código
use std::sync::Arc;
use std::thread;
let dados = Arc::new(vec![1, 2, 3]);
let d2 = Arc::clone(&dados);
let h = thread::spawn(move || {
println!("{:?}", d2);
});
h.join().unwrap();Exemplos
Wrap the config in an Arc and clone it per thread.
Envolva a config em um Arc e clone por thread.
Arc::clone only bumps the counter.
O Arc::clone só aumenta o contador.
Cuidado
O Arc só compartilha leitura; para alterar entre threads é preciso Mutex, RwLock ou atômicos. Não é o mesmo que Rc, que não é thread-safe.
Sinônimos
ponteiro contado atômico
Antônimos
Rc
Origem
Sigla de atomically reference counted, 'contado por referências de forma atômica'.