Ruby · Intermediário · Inglês · Técnico
Thread
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