【Duke】协程机制 021 - PingPongGooo/GoFoundation GitHub Wiki
Tread vs. Groutine
1. 创建时默认的stack大小
JDK5 以后 Java Thread stack 默认为1M
Grountine 的 stack 初始化大小为2k
2. 和KSE(Kernel Space Entity)的对应关系
Java Thread 是 1:1 系统线程由CPU直接调度,调度效率非常的高。但是会潜在一个问题。线程切换,会发生内核线程的切换。是一个非常大的消耗
Groutine是M:N 多个线程或者多个协程,都在一个系统线程里,和一个系统内核对应。 切换的消耗非常少。
package groutine
import (
"fmt"
"testing"
"time"
)
func TestGroutine(t *testing.T) {
for i:=0; i< 10; i++ {
go func(i int) { // 报 打印数字的 函数 放到协程中 执行
fmt.Println(i)
}(i)
}
time.Sleep(time.Millisecond *50)
}
go的协程简单易用。