zoukankan      html  css  js  c++  java
  • golang sync.Cond 类

    众所周知,go语言在多线程方面的支持是十分完备的。在go语言sync包中提供了一个Cond类,这个类用于goroutine之间进行协作。

    这个类并不复杂,只有三个函数,Broadcast() , Signal(), Wait(), 一个成员变量,L Lock

    其中Broadcast()实现的功能是唤醒在这个cond上等待的所有的goroutine,而Signal()则只选择一个进行唤醒。Wait()自然是让goroutine在

    这个cond上进行等待了。这几个函数有以下几个注意点:

    1.Wait()函数在调用时一定要确保已经获取了其成员变量锁L ,因为Wait第一件事就是解锁。 但是需要注意的是,当Wait()结束等待返回之前,

     它会重新对L进行加锁,也就是说,当Wait结束,调用它的Goroutine仍然会获取Lock L。

    2.调用Broadcast()函数会导致系统切换到之前在等待的那个Goroutine进行执行。

  • 相关阅读:
    【作业7】完成调查问卷
    用博客园第一周
    讲座观后感
    调查问卷
    第十一周·前端学习笔记--正则表达式
    调查问卷
    思维导图
    讲座心得1
    第一次作业(8.学习进度表)
    第一次作业(7.问卷调查)
  • 原文地址:https://www.cnblogs.com/elnino/p/7542922.html
Copyright © 2011-2022 走看看