1 .任意一个完成两种方法
- csp(多个协程一个chan ,←ch)
- select case 多路选择(default/超时)
2.全部完成
- scp(多个协程一个chan, for len(chan) 次循环 进行←chan取数据)
- sync.waitGroup
3.只运行一次
- sync.Once(func)单例模式
4.共享内存
- 多协程处理同一个内存变量(同一资源)sync.Mutex lock 与unlock方法上锁与解锁,进行协程安全处理
5.chan 关闭与广播
- chan close可以关闭渠道
- 关闭后的chan 不可以继续存放数据,但可以继续读取数据,只是读取到的数据为对应类型的零值,也可从读取数据的value,ok←chan中ok判断chan关闭
- 经常利用上述零值或者ok的判断,进行多消费者的消息广播
- 关闭后的chan ,读取数据(←chan)方法不在阻塞,即即刻返回零值