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
4

1 回答 1

1

bioruby 库(或至少它的某些版本)使用自动加载。自动加载不是线程安全的(至少在 ruby​​ 1.8 中),所以如果两个线程同时访问 Bio::Alignment,你可能会出错。

于 2010-01-20T10:47:10.330 回答