# Spawn workers to consume items from the iterator's enumerator based on the current concurrency level.
def spawn_workers
EM.next_tick(start_worker = proc{
if @workers < @concurrency and !@ended
# p [:spawning_worker, :workers=, @workers, :concurrency=, @concurrency, :ended=, @ended]
@workers += 1
@process_next.call
EM.next_tick(start_worker)
end
})
nil
end
EM-sychrony#fiberd_interatorによって使用されるEMinteratorからコードのこの部分を読み取りました。
私はEventmachinの基本的な考え方を持っていますが、next_tickのこの種の再帰的な使用法についてはよくわかりません。誰かが、このplzについて説明してもらえますか?
私の意見では、「while」や「for」ではなく、EMによって処理されるループのようなものです。私は正しいですか?そして、なぜこれ?