Implementation of goroutines
I have been reading up on concurrency in Go. In particular, I have been wondering about the statement from a presentation by Brad Fitzpatrick:
n, err := io.Copy(dst, src)
- copies n bytes from dst to src
- synchronous (blocks)
- Go runtime deals with making blocking efficient
Now in Go, if you make a call that blocks the current execution, you are (usually) only blocking the current goroutine, not a thread. The Go runtime multiplexes goroutines on fewer OS threads.
The question therefore is: What are the fundamental differences in the implementation of goroutines compared to OS threads that make goroutines so much more lightweight?
I have asked this question on the Go mailing list and the members of the Go team (notably Dmitry Vyukov and Ian Lance Taylor) have been incredibly helpful.
The summary is:
- stack that grows and shrinks on demand
- smaller context, easier to switch
- cooperative scheduling at known points is less work (can make assumptions about CPU state)
- scheduling in user space
Here is the discussion: enjoy!
Note: There are other languages (such as Haskell and Erlang) that also have the concept of lightweight "processes" that allow for blocking calls without blocking OS threads. The concept is sometimes referred to as green threads.
203 comments:
«Oldest ‹Older 201 – 203 of 203 Newer› Newest»
-
V Rise
said...
-
-
July 17, 2026 at 2:20 PM
-
AchieversIT
said...
-
-
July 20, 2026 at 8:50 AM
-
AchieversIT
said...
-
-
July 24, 2026 at 7:28 AM
«Oldest ‹Older 201 – 203 of 203 Newer› Newest»Excellent article! I really enjoyed your deep dive into the implementation of goroutines and what makes them so lightweight compared to traditional operating system threads. Explaining concepts such as dynamically growing stacks, user-space scheduling, efficient context switching, and the Go runtime's ability to multiplex many goroutines onto a smaller number of OS threads provides valuable insight into Go's concurrency model. Understanding these runtime internals helps developers write more scalable and efficient concurrent applications. As someone associated with Healthcare Digital Marketing Agency in Hyderabad, I appreciate technical content that makes advanced programming concepts easier to understand. Thanks for sharing this excellent resource!
very interesting information. thanks for sharing this topic with us.
best institute for data science in bangalore
data science institute in bangalore
data science offline course in bangalore
best data science institute in bangalore with placement
very interesting information. thanks for sharing this topic with us.
data analyst course in bangalore
data analytics training institute in bangalore
data analyst course in bangalore with placement
data analyst course with placement in bangalore
Post a Comment