Implementando uma barreira de sincronização em Ruby

Estou tentando "replicar" o comportamento de CUDA__synchtreads() funcionar em Ruby. Especificamente, eu tenho um conjunto deN segmentos que precisam executar algum código, então todos esperam um no outro no ponto médio em execução antes de continuar com o resto de seus negócios. Por exemplo:

x = 0

a = Thread.new do
  x = 1
  syncthreads()  
end

b = Thread.new do 
  syncthreads()
  # x should have been changed
  raise if x == 0
end

[a,b].each { |t| t.join }

Quais ferramentas eu preciso usar para conseguir isso? Eu tentei usar um hash global e, em seguida, dormir até que todos os segmentos definiram um sinalizador indicando que eles são feitos com a primeira parte do código. Eu não consegui que funcionasse corretamente; isso resultou em travamentos e impasse. Eupensar Eu preciso usar uma combinação deMutex eConditionVariable mas não tenho certeza do porquê / como.

Editar: 50 visualizações e sem resposta! Parece um candidato a uma recompensa ...

questionAnswers(2)

yourAnswerToTheQuestion