golang并发编程

记录和学习golang并发编程的技巧

 

概念

 

CAS

CAS原理: CAS有三个操作数:内存值V、旧的预期值A、要修改的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做并返回false。

CAS操作是由操作系统提供相应的接口,并且在硬件层面提供支持

初级

生成器(generator)

channel 在golang中和基本变量如int,string类型一样是第一级别的类型,生成器即函数返回一个channel,函数内部给channel添加东西。

生成器模式最为常用,可以用来实现最简单的生产者消费者模式,或者订阅发布模式。

复用channel(select)

控制并发(WaitGroup->chan->context)

WaitGroup

waitGroup为基础控制并发的类

Context

context有如下4个函数用来由上级父context衍生新的context。

context即上下文,如下代码为构造一个,带取消函数的context, 即执行取消方法之后,watch函数响应退出。

context通常用来处理request请求的每个goroutine。

 

worker调度

基础的worker队列调度方式

 

 

Reference

 

Go Concurrency Pattern