Ruby несколько фоновых потоков - PullRequest
2 голосов
/ 19 мая 2010

Мне нужно запустить несколько фоновых потоков в пуле потоков с таймаутом. Схема примерно такая:

    #!/usr/bin/env ruby

require 'thread'

def foo(&block)
  bar(block)
end

def bar(block)
  Thread.abort_on_exception=true
  @main = Thread.new { block.call }
end


foo {
sleep 1
puts 'test'
}

Почему, если я бегу, я не получаю вывод? (и не спать, ждать?)

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

Попробуйте самоцвет work_queue http://rubygems.org/gems/work_queue/

3 голосов
/ 19 мая 2010

Программа заканчивается, когда заканчивается основной поток. Вам нужно подождать в потоке, созданном bar, используя join:

foo {
  sleep 1
  puts 'test'
}.join
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...