Go Thread - GoroutinesA goroutine is a lightweight thread managed by the Go runtime.
Goroutines are functions or methods that run concurrently with other functions or methods. Goroutines can be thought of as lightweight threads. The cost of creating a Goroutine is tiny when compared to a thread. Hence it's common for Go applications to have thousands of Goroutines running concurrently.
starts a new goroutine running
The evaluation of f, x, y, and z happens in the current goroutine and the execution of f happens in the new goroutine.
Goroutines run in the same address space, so access to shared memory must be synchronized. The sync package provides useful primitives, although you won't need them much in Go as there are other primitives. (See the next slide.)
Example of Go Goroutines
Difference between Goroutines and ThreadGoroutine
Goroutine is method/function which can be executed independently along with other goroutines. Every concurrent activity in Go language is generally terms as gorountine.
Thread is a lightweight process. It can be treated as a unit to execute a piece of code. Operating system manages the thread.
|1||Managed By||Goroutine methods are managed by golang runtime.||Thread are managed by operating systems.|
|2||Hardware dependency||Goroutine are independent to hardware.||Thread are dependent on hardware.|
|3||Communication Medium||Goroutines uses channels as communication medium.||Thread have no easy communication medium.|
|4||Latency||Goroutines can commuicate with other routines with low latency.||Thread as have no communication medium, communicate with other thread with high latency.|
|5||ID||Goroutine does not have any thread local storage and no unique id.||Thread have thread local storage and have unique id.|
|6||Scheduling||Goroutines are co-operatively scheduled.||Threads are preemptively scheduled.|
|7||Startup||Goroutines have faster startup time.||Threads have slower startup time.|
|8||Stack||Goroutines have growable segmented stacks.||Threads do not have growable segmented stacks.|
In this page (written and validated by A. Gawali) you learned about Go Thread - Goroutines . What's Next? If you are interested in completing Go tutorial, your next topic will be learning about: Go Log and Logger.
Incorrect info or code snippet? We take very seriously the accuracy of the information provided on our website. We also make sure to test all snippets and examples provided for each section. If you find any incorrect information, please send us an email about the issue: email@example.com.