ファイバー\コルーチンの背後にあるアイデアとCrystalでの実装を学ぶのに苦労しています。
私はこれがこれを尋ねる適切な場所であることを願っています.「ここにいない」という答えを完全に受け入れます:)
これは、Ruby でマルチスレッドを処理する私の通常の方法です。
threads = []
max_threads = 10
loop do
begin
threads << Thread.new do
helper_method(1,2,3,4)
end
rescue Exception => e
puts "Error Starting thread"
end
begin
threads = threads.select { |t| t.alive? ? true : (t.join; false) }
while threads.size >= max_threads
puts 'Got Maximum threads'
sleep 1
threads = threads.select { |t| t.alive? ? true : (t.join; false) }
end
rescue Exception => e
puts e
end
end
このようにして、通常は着信接続などの新しいスレッドを開き、スレッドをスレッド配列に追加してから、必要以上のスレッドがないことを確認します。
spawn\channels\fibers などを使用して、Crystal で同様のものを実装するにはどうすればよいでしょうか。