2010-01-20 60 views
0

爲什麼以下爲什麼我在線程中時無法訪問某些庫類?

require "bio" 

threads = (1..2).map do 
    Thread.new do 
    seqs = ["gattaca"] * 5 
    alignment = Bio::Alignment.new(seqs) 
    end 
end 

threads.each {|th| th.join} ; nil 

的給這個錯誤信息?

NameError: uninitialized constant Bio::Alignment 
    from (irb):6 
    from (irb):10:in `join' 
    from (irb):10 
    from (irb):10:in `each' 
    from (irb):10 

回答

1

bioruby庫(或至少它的某些版本)使用自動加載。自動加載不是線程安全的(至少在Ruby 1.8中),所以如果兩個線程同時訪問Bio :: Alignment,則可能有錯誤。

相關問題