go 协程和 go 主线程 | 学习笔记

简介: 快速学习 go 协程和 go 主线程

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程go 协程和 go 主线程】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9747


go 协程和 go 主线程

 

内容介绍

一,go 协程的特点

二,go 主线程

三,Goroutine 的调度模型

四,Goroutine-快速入门

 

一,go 协程的特点

有独立的栈空间

共享程序堆空间

调度由用户控制
协程是轻量级的线程

 

二,go 主线程

go 主线程(有程序员直接称为线程/也可以理解成进程):一个 go 线程上,可以起多个协程,可以这样理解,协程是轻量级的线程。

协程是轻量级的线程【编译器做优化】

image.png


三,goroutine 的调度模型

MPG 模式基本介绍
M:操作系统的主线程(是物理线程)2) P: 协程执行需要的上下文

P:协程执行需要的上下文
G:协程

 

四,goroutine-快速入门

快速入门小结
主线程是一个物理线程,直接作用在 cpu 上。是重量级的,非常耗费 cpu 资源。
协程从主线程开启的,是轻量级的线程,是逻辑态。对资源消耗相对小。
olang 的协程机制是重要的特点,可以轻松的开启上万个协程。其它编程语言的并发机制是一般基于线程,开启过多的线程,资源耗费大,这里就突显 golang 在并发上的优势。

案例说明:
请编写一个程序,完成如下功能:
1. 在主线程(可以理解成进程)中,开启一个 goroutine, 该协程每隔1秒输出"hello,world"
2. 在主线程中也每隔一秒输出"hello,golang", 输出10次后,退出程序。
3. 要求主线程和 goroutine 同时执行。
4. 画出主线程和协程执行流程图。

相关文章
|
5月前
|
Go 调度 开发者
[go 面试] 深入理解进程、线程和协程的概念及区别
[go 面试] 深入理解进程、线程和协程的概念及区别
|
6月前
|
Java Go 调度
GO 协程
GO 协程
49 0
|
3月前
|
安全 Go 调度
探索Go语言的并发模式:协程与通道的协同作用
Go语言以其并发能力闻名于世,而协程(goroutine)和通道(channel)是实现并发的两大利器。本文将深入了解Go语言中协程的轻量级特性,探讨如何利用通道进行协程间的安全通信,并通过实际案例演示如何将这两者结合起来,构建高效且可靠的并发系统。
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
|
4月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
4月前
|
人工智能 算法 搜索推荐
Go学习笔记-代码调
近年来,人工智能技术飞速发展,Cody作为由Sourcegraph开发的一款AI驱动编码助手,应运而生。它不仅提供代码预测与补全,还能深度理解代码上下文,为开发者提供准确建议,提升编码效率和质量。Cody能识别潜在错误并提出修复建议,缩短调试时间,同时进行智能代码审查,帮助优化代码结构和风格。未来,随着AI技术进步,Cody将不断学习优化,成为开发者不可或缺的伙伴,推动编程领域的创新与发展。
39 0
|
5月前
|
监控 Devops 测试技术
|
5月前
|
人工智能 Go
Go 等待协程完成
Go 等待协程完成
35 0
|
7月前
|
Go
如何在Go中进行文件操作以及如何使用协程来实现并发编程
如何在Go中进行文件操作以及如何使用协程来实现并发编程
98 2
|
8月前
|
安全 Go 调度