专栏名称: GoCN
最具规模和生命力的 Go 开发者社区
目录
相关文章推荐
今天看啥  ›  专栏  ›  GoCN

Go语言五种实现broadcaster的方法,你喜欢哪一种?

GoCN  · 公众号  ·  · 2024-12-18 11:26
    

文章预览

昨天看到 Jaana Dogan 创建了一个 broadcaster 的库, 话说美女 Jaana Dogan 又回到了 Google 了么。她的实现我们就当做 broadcaster 的第一个实现吧。 什么是 broadcaster?就是村口的大喇叭,一播音,全村都知道了。 Jaana Dogan 实现的这个 broadcaster 只有通知的功能,没有传递消息,也不能重用。我们就以这个库为基准,看看我们能够实现几种方式。 1、sync.Cond 实现 Jaana Dogan 使用 sync.Cond 实现。 package  main import  ( "sync" ) type  Broadcaster  struct  {  mu       *sync.Mutex  cond     *sync.Cond  signaled  bool } func   NewBroadcaster ()  * Broadcaster  { var  mu sync.Mutex return   {   mu:       ,   cond:     sync.NewCond( ),   signaled:  false ,  } } func   (b *Broadcaster)   Go (fn  func () )  { go func ()  {   b.cond.L.Lock() defer  b.cond.L.Unlock() for  !b.signaled {    b.cond.Wait()   }   fn()  }() } func   (b *Broadcaster)   Bro ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览