go 并发编程
解决并发问题高效
协程 比线程,进程更轻量,轻松上百万,基于线程
主线程退出,协程结束
协程间同步
chan goroutine间的通信方式
ch := make(chan int)
ch <- c 写
c := <-ch 读
协程里写,协程外读,可以阻塞协程外的程序块
协程里读,协程外写,可以阻塞协程内的程序块
谁读谁阻塞,谁写谁出让
缓冲chan
c := make(chan int,n) //缓冲大小,队列满了才阻塞
select
异步非阻塞的一种方式
select
case <-ch :
fmt.Println("成功读到数据")
case ch<-1 :
fmt.Println("成功写入数据")
default:
fmt.Println("default")
协程特点:
1、主动切换,让出执行权
2、发生了IO,导致执行阻塞