Is there any comprehensive overview somewhere that discusses all the different types of threads and what their relationship is with the OS and the scheduler? I’ve heard so much contradicting information about whether you want certain types of threads, or whether thread pooling is a performance gain or a performance hit, or that threads are heavy weight so you should use these other kind of threads that don’t map directly to real threads but then how is that different from thread pooling …. I’m paralyzed. How does anyone make sense of it? Assuming the use of a language that actually directly interacts with threads (I’m aware of concurrent languages, implicit parallelism, etc. as an alternative to needing to know this stuff but I’m curious about this at the moment)
Is there any comprehensive overview somewhere that discusses all the different types of threads
Share
Here is my brief summary, please comment and edit at will:
There are no hyperthreads, unless you’re talking about Intel’s hyperthreading in which case it’s just virtual cores.
“Green” usually means “not OS-level” (scheduled/handled by a VM, which may or may not map those unto multiple OS-level threads or processes)
pthreads are an API (Posix Threads)
Kernel threads vs user threads is an implementation level (user threads are implemented in userland, so the kernel is not aware of them and neither is its scheduler), “threads” alone is generally an alias for “kernel threads”
Fibers are system-level coroutines. They’re threads, except cooperatively multitasked rather than preemptively.