Hacker News new | ask | show | jobs
by tightbookkeeper 583 days ago
> you run out of (OS) threads very fast.

What does run out mean?

1 comments

Each thread is tied to an OS thread, which is tied to a CPU core/hyper-thread. You get like ~6000 threads on a modern OS and CPU.

Your program needs one million threads that sleep for 2 seconds, read some data and then finish. Guess what? Your execution is going to take hours, or get some kind of exception that you run out of threads because after the first ~6000 threads are taken, your OS can no longer give threads to anything else.

With Green threads, the threads are fake aka virtual and controlled by the language's runtime, be it JVM, CLR, Go's runtime etc. Runtime is usually smart enough to recognize sleeps and, while waiting for something, schedule another thread in its space.[1] So now all one million threads start near instantly and work almost all in parallel.

[1]https://www.youtube.com/watch?v=bOnIYy3Y5OA

Desktop OS may struggle at thousands of thread. Linux can handle many more just fine.

> Your program needs one million threads that sleep for 2 seconds, read some data and then finish.

I have yet to see this problem, but yeah I agree that millions is about when there will be problems.