Go并发设计

goroutine(极少的栈内存,比thread更易用、更高效、更轻便)


runtime.Gosched()表示把CPU时间片让给别人,下次某个时候恢复执行该goroutine


想要发挥多核处理器的并行,设置runtime.GOMAXPROCS(n)


默认情况下,channel接受和发送数据都是阻塞的,除非另一端已经准备好,这样就使得goroutines同步变的更加的简单,而不需要显示的lock。


ch:=make(chan type,value)

value==0 ! 无缓冲(阻塞)

value>0  !缓冲 (非阻塞,直到value个元素)


range 能够不断的读取channel里面的数据,直到该channel被显示的关闭。

生产者通过关键字close函数关闭channel,


如果存在多个channel,Go提供了关键字select,通过select可以监听channel上的数据流动。select默认是阻塞的,只有当监听的channel中有发送或者接受可以进行时才会运行。,当多个channel都准备好的时候, select是随机的选择一个执行的。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-24
  • 2021-10-18
猜你喜欢
  • 2022-12-23
  • 2021-05-07
  • 2021-06-13
  • 2021-11-03
  • 2021-06-23
  • 2022-02-11
  • 2022-03-02
相关资源
相似解决方案