Go学习总结——并发编程

1、CSP vs Actor

  • 和Actor的直接通信不同,CSP模式则是通过channel进行通讯的,更松耦合一些
  • Go中channel是有容量限制并且独立于处理Groutine,而如Erlang,Actor模式中的mailbox的容量是无限的,接收进程也总是被动地处理消息

2、多路选择和超时控制

  • select
  • time.After

3、channel的关闭和广播

  • 向关闭的channel发送数据时,会导致panic
  • v,ok <- ch;ok为bool值,true表示正常接收,false表示通道关闭
  • 所有的channel接受者都会在channel关闭(close(chan))时,立刻从阻塞等待中返回且上述OK值为false。这个广播机制常被利用,进行向多个订阅者同时发送信号。如:退出信号、任务的取消

4、context与任务取消

  • 根Context:通过context.Backgroud()创建
  • 子Context:context.WithCancel(parentContext)创建
    • ctx,cancel := context.WithCancel(context.BackGround())
  • 当前Context被取消时,基于他的子Context都会被取消
  • 接收取消通知 <- ctx.Done()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值