ExpertiDict

Rust · Essencial · Inglês · Técnico

Arc

/ɑːɹk/substantivo

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'.

Veja também

Todos os termos de Rust