1.5 Go微服务实战(Go语言基础) --- 并发编程

第5章 并发编程 
	Go语言的多线程是基于消息传递的,Go语言将基于CSP模型的并发编程内置到了语言中,其特点就是goroutine之间是共享内存的。

5.1 协程 
	协程是Go语言特有的一种轻量级线程,实际上,所有的Go语言都是通过goroutine运行的。

	5.1.1 核心概念 
		进程:是指具有一定功能的程序关于某数据集合上的一次执行过程,主要包含程序指令和数据。
		线程:进场的子集,是由进程创建的拥有自己控制流和栈的轻量级实体,一个进程至少有一个线程。线程是进程的实际存在。
		goroutine:是Go语言并发程序的最小执行单位,可以理解为goroutine运行在操作系统的线程之上,它更为轻量。

	5.1.2 goroutine的基本使用 
	5.1.3 sync.WaitGroup 

5.2 通道 
	通道是Go语言提供的一种在goroutine之间进行数据传输的通信机制。当然,通过channel传递的数据只能是一些指定的类型,这些类型被称为
通道的元素类型。

	5.2.1 channel写入数据 
	5.2.2 channel接收数据 
	5.2.3 以channel作为函数参数 
		无缓存的channel的特点就是同步,一个channel写入数据后,如果没有其他goroutine读取,则通道一直阻塞。

	5.2.4 缓存channel 
	5.2.5 select 
	5.2.6 超时检查 
		select 可以很方便的完成goroutine的超时检查。超时就是指某个goroutine由于意外退出,导致另一方的goroutine阻塞,从而影响
	主goroutine。

		当goroutine向某个无缓存通道发送数据,而没有其他goroutine从该无缓存通道接收数据时,发送的goroutine就会阻塞,这种情况叫
	goroutine泄露。goroutine泄露是造成超时的最常见原因。

		超时检查,技术上使用的是 select + time.After() 来实现的。

5.3 pipeline 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值