计时器及系统负荷均衡

timetime.Tickertime.NewTicker(dur int64)Stop()selecttime.Tick()Tick(d Duration) <-chan TimeddchRatechRate
(Timer)(Ticker)NewTimer(d Duration))Dration dtime.After(d)func After(d Duration) <-chan TimeDuration dNewTimer(d).CTick()After()chlambdatime.After()timeout-channelselecttimeoutNsselecttimeoutclient.CalllambdachselectselectforselectcaseQuerych

缓冲通道实现信号量模式

使用缓冲通道模拟信号量,需满足

  • 带缓冲通道的容量和要同步的资源容量相同

  • 通道的长度(当前存放的元素个数)与当前资源被使用的数量相同

  • 容量减去通道的长度就是未处理的资源个数(标准信号量的整数值)

  • 创建一个可缓冲通道表示单一信号量。

semaphore:sem = make(semaphore, N)
  • 一个互斥的例子

管道过滤

  • 从通道接收的数据并发送给输出通道,可过滤符合条件的数据。

协程的恢复

  • 以下代码停掉了服务器内部一个失败的协程而不影响其他协程的工作。