1.goroutine
与传统的系统级线程和进程相比,协程最大的优势在于“轻量级”。可以轻松创建上万个而不会导致系统资源衰竭。而线程和进程通常很难超过1万个。这也是协程别称“轻量级线程”的原因。
一个线程中可以有任意多个协程,但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。
Go 在语言级别支持协程,叫goroutine。Go 语言标准库提供的所有系统调用操作(包括所有同步IO操作),都会出让CPU给其他goroutine。这让轻量级线程的切换管理不依赖于系统的线程和进程,也不需要依赖于CPU的核心数量。
GMP:
调度器:
handoff机制:
work stealing机制:
2.反射解析结构体标签TAG
3.go并行
4.关闭channel
5.channel有缓冲与无缓冲的同步问题
6.channel
可以使用range来迭代不断操作channel
for data :=range c{
fmt.Println(data)
}