こんにちは。
rubyのThreadsで色々と実験しています。
固まることが多いのですが、これはなぜですか?
ruby
1class Slack 2 def initialize(names) 3 @names = names 4 end 5 6 def list 7 threads = [] 8 @names.each do |name| 9 threads << Thread.new do 10 3.times do |i| 11 puts "#{name}:#{i}" 12 end 13 end 14 end 15 threads.each { |t| t.join } 16 end 17end 18 19names = %w(foo bar baz) 20Slack.new(names).list 21=> 22baz:0 23baz:1 24baz:2 25bar:0 26foo:0 27foo:1 28foo:2 29bar:1 30bar:2
こちらはうまくいきます。
Slack.new([*1..10000]).list => can't create Thread: Resource temporarily unavailable (ThreadError)
大量の処理をさせたいのに、エラーになってしまいます。
threadsを10,000個作成しているのは多すぎなのでしょうか?
その場合、上限値はどこを見て判別するのでしょうか?
よろしければ教えてくださいm(_ _)m
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/15 06:22