协程快速入门 | 学习笔记

简介: 快速学习协程快速入门

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

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


协程快速入门

 

一,goroutine-快速入门

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

案例说明:
请编写一个程序,完成如下功能:
(1)在主线程(可以理解成进程)中,开启一个 goroutine 该协程每隔1秒输出"hello,world"

(2)在主线程中也每隔一秒输出"hellogolang",输出10次后,退出程序

(3)要求主线程和 goroutine 同时执行

(4)画出主线程和协程执行流程图

代码实现:

第一步:创建 goroutinedemo,新建 main.go

package mainimport ("fmt""strconv")

第二步:任务粘贴过来
//在主线程(可以理解成进程)中,开启一个 goroutine,该协程每隔1秒输出"hello,world"
//在主线程中也每隔一秒输出"hello, golang",输出10次后,退出程序
//要求主线程和 goroutine 同时执行

第三步:填写主函数
//编写一个函数,每隔1秒输出"hello,world"
func test() {for i :=1; i < 1θ; i++ {fmt.Println( "hello,world”+strconv.itoa(i))time. sleep(time .Second)

说明:应进行休眠一下
func main() {

第四步:只有填一个 go 就开启一个协程

go test()//开启了一个协程
for i :=1; I <=1θ; i++ {fmt . Println(" main() hello, golang" + strconv. Itoa(1))time . Sleep(time Second)

输出效果说明:main 这个主线程和 test 这个协程

tesst < he llo.world 1nain() he 1 lo。go lang2tesst < hello.world 2nain() he 1 lo . go lang3tesst “he llo.world 3tesst ( he llo.world 4nain() he 1lo. go lang4tesst <) hello,world 5nain() he 1lo. go lang5tesst ( hello.world 6nain() he 1lo . go lang6tesst () hello.world 7nain() he 1lo. go lang7…….

主线程和协程执行流程图

image.png

 

相关文章
|
8天前
|
C++
C/C++协程学习笔记
C/C++协程学习笔记
|
8天前
|
存储 前端开发 rax
协程学习笔记
协程学习笔记
37 0
|
8天前
|
存储 前端开发 rax
协程学习笔记 NtyCo/libgo
协程学习笔记 NtyCo/libgo
37 0
|
7月前
|
安全 调度 数据库
Kotlin 学习笔记(五)—— 协程的基础知识,面试官的最爱了~(下)
Kotlin 学习笔记(五)—— 协程的基础知识,面试官的最爱了~(下)
46 0
|
7月前
|
Java Go Android开发
Kotlin 学习笔记(五)—— 协程的基础知识,面试官的最爱了~(上)
Kotlin 学习笔记(五)—— 协程的基础知识,面试官的最爱了~(上)
54 0
|
7月前
|
Linux Go 调度
Go学习笔记-协程和IO多路复用
Go学习笔记-协程和IO多路复用
100 0
Go学习笔记-协程和IO多路复用
|
网络协议 安全 测试技术
协程并发(并行)资源竞争问题 | 学习笔记
快速学习协程并发(并行)资源竞争问题
119 0
协程并发(并行)资源竞争问题 | 学习笔记
|
网络协议 测试技术 Go
协程配合管道的综合案例 | 学习笔记
快速学习协程配合管道的综合案例
114 0
协程配合管道的综合案例 | 学习笔记
|
网络协议 安全 测试技术
协程求素数的代码实现 | 学习笔记
快速学习协程求素数的代码实现
81 0
协程求素数的代码实现 | 学习笔记
|
网络协议 Unix 测试技术
协程求素数的代码效率测试 | 学习笔记
快速学习协程求素数的代码效率测试
83 0
协程求素数的代码效率测试 | 学习笔记