Skip to content

Latest commit

 

History

History
 
 

01-goroutines

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Goroutines - Concurrency and Channels

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.

Notes

  • 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.

Documentation

Scheduler Diagrams

Links

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

Code Review

Goroutines and concurrency (Go Playground)

Goroutine time slicing (Go Playground)

Goroutines and parallelism (Go Playground)

Exercises

Exercise 1

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)


Ardan Labs Ardan Studios GoingGo Blog


All material is licensed under the GNU Free Documentation License.