Ich habe etwas harte Zeit, die Idee hinter Fibers \ coroutines und die Implementierung in Crystal zu lernen.Crystal konvertiert die Idee hinter Thread Pool zu Fibers/spawn
Ich hoffe, dass dies der richtige Ort, um dies zu fragen, ich werde total eine „nicht hier“ Antwort akzeptieren :)
Dies ist meine übliche Art und Weise in Ruby Multi-Threading Handhabung:
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
Auf diese Weise öffne ich einen neuen Thread, in der Regel von einer eingehenden Verbindung oder eine andere Sache, den Thread zu einem Thread-Array hinzufügen, und dann überprüfen, dass ich nicht mehr Threads habe, was ich wollte.
Was wäre eine gute Möglichkeit, etwas Ähnliches in Crystal mit spawn \ channels \ fibers usw. zu implementieren?
Genau das, was ich gesucht habe, danke! – Ba7a7chy