Go Language Goroutines: Difference between revisions
(Created page with "=Internal= * Concurrency in Go =Overview= A goroutine is a Go thread. Many goroutines exe...") |
|||
Line 7: | Line 7: | ||
A goroutine is always created automatically, to run the <code>main()</code> function. | A goroutine is always created automatically, to run the <code>main()</code> function. | ||
=Creation and Invocation= | |||
<span id='go_keyword'></span>To explicitly create a goroutine, use the <code>[[Go_Language#go_keyword|go]]</code> [[Go_Language#Keywords|keyword]], by providing a function invocation. | <span id='go_keyword'></span>To explicitly create a goroutine, use the <code>[[Go_Language#go_keyword|go]]</code> [[Go_Language#Keywords|keyword]], by providing a function invocation. | ||
Revision as of 02:17, 1 September 2023
Internal
Overview
A goroutine is a Go thread. Many goroutines execute within a single O/S thread, the main thread?. From the O/S point of view, only one thread is scheduled. The goroutine schedule is done by the Go runtime scheduler. The Go runtime scheduler uses a logical processor. The goroutines scheduled on a logical processor are executing concurrently, not |in parallel. However, it is possible to have more than one logical processor, each logical processors can be mapped onto an O/S thread, which may be scheduled to work on different cores. In this case, things may become parallel.
A goroutine is always created automatically, to run the main()
function.
Creation and Invocation
To explicitly create a goroutine, use the go
keyword, by providing a function invocation.
func somefunc(i int) {
...
}
...
go somefunc(10)
what happens with the result of the function?
A goroutine exits when the code is complete. When the main
goroutine is complete, all other goroutines are forced to exit.