Threads
Agora que entendemos como funciona o forking de processos, vamos explorar as threads. Threads são uma forma mais leve de concorrência, permitindo que múltiplas tarefas sejam executadas dentro do mesmo processo, compartilhando o mesmo espaço de memória.
Conforme explicado no módulo de C, conseguimos criar POSIX Threads através da chamada de função pthread_create. Na linguagem Ruby, conseguimos manipular kernel threads através da classe Thread.

# Função que será executada pela thread
def handle
puts "Hello from thread!"
end
# Cria uma thread
thread = Thread.new do
handle
end
puts "Hello from main thread!"
# Aguarda a thread terminar
thread.joinSimples, não? Podíamos também passar qualquer código Ruby pra dentro do bloco da thread, não precisa ser necessariamente um método:
Um exemplo mais robusto
Agora vamos fazer um exemplo mais complexo com threads, assim como fizemos com forking de processos:
Ruby dispensa comentários, não?
Vamos agora ver como Ruby resolve problemas de race condition.
Last updated