And again, concerning performance : It takes only 244ms on my low end laptop : import nimgo import std/times proc coroEntry() = suspend() let t0 = getTime() for i in 0..100_000: resume(newCoroutine(coroEntry)) echo "Time=", (getTime() - t0).inMilliseconds() Run
Where with threads, even when tweaking with ulimits, I'm capped at 9000 threads, and spawning only 9000 took 320ms. And dealing with asynchronicity, having a thousands of pending/blocking tasks seems not to be a rare case.