分布式系统

Posted by Liao on 2022-07-26

当执行锁操作时,涉及不同的线程可能不知道彼此的状态。对于另外一些线程,它们只希望获取到数据而不受到其它线程的干扰,因此线程之间也需要交流以等待对方的数据,通常叫协作。

协程间的通信,称为Coordination,Go中提供了几种方法实现:

  • channel
  • Sync.cond() 若有些线程停在那里,你想每隔一段时间发一个信号,但你不确定线程是否在等你。若它在等,就给它发一个ticket,它则清楚它自己要做的事
  • sync.waitGroup 适合启动已知数量的goroutines,然后使它们等待直到调用done()结束