I'm reading up on concurrency. I've got a bit over my head with terms that have confusingly similar definitions. Namely:
- Processes
- Threads
- "Green threads"
- Protothreads
- Fibers
- Coroutines
- "Goroutines" in the Go language
My impression is that the distinctions rest on (1) whether truly parallel or multiplexed; (2) whether managed at the CPU, at the OS, or in the program; and (3..5) a few other things I can't identify.
Is there a succinct and unambiguous guide to the differences between these approaches to parallelism?