开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:go 协程和 go 主线程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9747
go 协程和 go 主线程
内容介绍
一,go 协程的特点
二,go 主线程
三,Goroutine 的调度模型
四,Goroutine-快速入门
一,go 协程的特点
有独立的栈空间
共享程序堆空间
调度由用户控制
协程是轻量级的线程
二,go 主线程
go 主线程(有程序员直接称为线程/也可以理解成进程):一个 go 线程上,可以起多个协程,可以这样理解,协程是轻量级的线程。
协程是轻量级的线程【编译器做优化】
三,goroutine 的调度模型
MPG 模式基本介绍
M:操作系统的主线程(是物理线程)2) P: 协程执行需要的上下文
P:协程执行需要的上下文
G:协程
四,goroutine-快速入门
快速入门小结
主线程是一个物理线程,直接作用在 cpu 上。是重量级的,非常耗费 cpu 资源。
协程从主线程开启的,是轻量级的线程,是逻辑态。对资源消耗相对小。
olang 的协程机制是重要的特点,可以轻松的开启上万个协程。其它编程语言的并发机制是一般基于线程,开启过多的线程,资源耗费大,这里就突显 golang 在并发上的优势。
案例说明:
请编写一个程序,完成如下功能:
1. 在主线程(可以理解成进程)中,开启一个 goroutine, 该协程每隔1秒输出"hello,world"
2. 在主线程中也每隔一秒输出"hello,golang", 输出10次后,退出程序。
3. 要求主线程和 goroutine 同时执行。
4. 画出主线程和协程执行流程图。