ExpertiDict

Ruby · Intermediário · Inglês · Técnico

Thread

/θɹɛd/substantivo

Classe que cria uma linha de execução no processo. No CRuby, por causa do GVL, só uma thread executa código Ruby por vez, mas elas ajudam em operações de I/O.

Onde usar

Aparece em chamadas de rede em paralelo e em servidores como o Puma. Compartilhar dados mutáveis exige cuidado, com Mutex ou estruturas seguras para threads.

Em código

ts = 3.times.map do |i|
  Thread.new(i) do |n|
    sleep 0.1
    n * 2
  end
end
p ts.map(&:value)  # => [0, 2, 4]

Exemplos

I fetch the three APIs in separate threads.

Busco as três APIs em threads separadas.

Call join to wait for the thread to finish.

Chame join para esperar a thread terminar.

Cuidado

Não espere ganho de CPU em contas pesadas só com threads no CRuby; para isso, use processos ou Ractor.

Sinônimos

linha de execução

Veja também

Todos os termos de Ruby