Coroutine is a lightweight thread implementation in the Go language and is managed by the Go runtime. Next, I will introduce the goroute coroutine in the go language from the go introductory tutorial column.
goroute coroutine
Process and thread
The process is the system resource The basic unit of allocation and scheduling. Thread is the basic unit of CPU scheduling and dispatch. A process can create and cancel multiple threads
Concurrency and Parallel
Multiple threads A program runs on a CPU with one core, which is concurrent
A multi-threaded program runs on a CPU with multiple cores, which is parallel
Coroutines and threads
Coroutine: independent stack space, shared heap memory, scheduling controlled by the user, essentially similar to user-level threads, the scheduling of these user-level threads is implemented by themselves.
Threads: One thread can run multiple coroutines.
A simple concurrency case. This two coroutines will print out hello and world
package main import( "fmt" "time" ) func test(){ for{ fmt.Println("hello") time.Sleep(time.Second) } } func main(){ go test() for{ fmt.Println("world") time.Sleep(time.Second) } }
For more go language knowledge, please pay attention to the php Chinese websitego language tutorial column .
The above is the detailed content of goroute coroutine in go language. For more information, please follow other related articles on the PHP Chinese website!