Goroutines are functions that are created and scheduled to be run indenpently. Goroutines are multiplexed against a shared thread that is own by context. The scheduler is responsible for the management and execution of goroutines.
- Goroutines are functions that are scheduled to run independently.
- The scheduler uses a context that owns an OS thread and goroutine run queue.
- We must always maintain an account of running goroutines and shutdown cleanly.
- Concurrency is not parallelism.
- Concurrency is about dealing with lots of things at once.
- Parallelism is about doing lots of things at once.
https://blog.golang.org/advanced-go-concurrency-patterns
https://blog.golang.org/context
https://blog.golang.org/concurrency-is-not-parallelism
https://talks.golang.org/2013/distsys.slide
https://www.goinggo.net/2014/01/concurrency-goroutines-and-gomaxprocs.html
Goroutines and concurrency (Go Playground)
Goroutine time slicing (Go Playground)
Goroutines and parallelism (Go Playground)
Part A Create a program that declares two anonymous functions. Once that counts up to 100 from 0 and one that counts down to 0 from 100. Display each number with an unique identifier for each goroutine. Then create goroutines from these functions and don't let main return until the goroutines complete.
Part B Run the program in parallel.
Template (Go Playground) | Answer (Go Playground)
All material is licensed under the GNU Free Documentation License.