https://blog.csdn.net/jinglexy/article/details/80516788

Signal 发现等待最长时间的 goroutine 并通知它,而 Broadcast 向所有等待 的 goroutine 发送信号。

package mainimport ("fmt""sync""time"
)var locker = new(sync.Mutex)
var cond = sync.NewCond(locker)func test(x int) {cond.L.Lock() //获取锁fmt.Println("in: ", x)cond.Wait() //等待通知  暂时阻塞fmt.Println("do: ", x)time.Sleep(time.Second * 2)cond.L.Unlock()//释放锁fmt.Println("out: ", x)
}func main() {for i := 0; i < 5; i++ {go test(i) //所有线程都获取锁}fmt.Println("start all")time.Sleep(time.Second * 10)fmt.Println("Signal") // 下发一个通知给已经获取锁的goroutinecond.Signal()time.Sleep(time.Second * 5)fmt.Println("Signal") // 下发一个通知给已经获取锁的goroutinecond.Signal()time.Sleep(time.Second * 5)fmt.Println("broadcast")cond.Broadcast()time.Sleep(time.Second * 10)fmt.Println("finish all")
}

golang cond相关推荐

  1. Golang sync.Cond 简介与用法

    文章目录 1.简介 2.使用场景 3.原理 4.使用示例 5.注意事项 参考文章 1.简介 sync.Cond 是基于互斥锁/读写锁实现的条件变量,用来协调想要访问共享资源的那些 Goroutine. ...

  2. GoLang之使用sync.Cond

    文章目录 GoLang之使用sync.Cond 1.Cond结构体 1.1.Cond结构体 1.2Broadcast方法 1.3Signal方法 1.4Wait方法 2.NewCond函数 3.介绍 ...

  3. GoLang之使用sync.pool和sync.cond

    GoLang之使用sync.pool和sync.cond 目录 GoLang之使用sync.pool和sync.cond 1.sync.Pool结构体 1.1sync.Pool结构体 1.2Put方法 ...

  4. Golang sync.Cond详细理解

    sync.Cond用于goroutine之间的协作,用于协程的挂起和唤醒. 结构体 type Cond struct {noCopy noCopy // noCopy可以嵌入到结构中,在第一次使用后不 ...

  5. Golang 基础:底层并发原语 Mutex RWMutex Cond WaitGroup Once等使用和基本实现

    文章目录 互斥锁 Mutex 拷贝使用 Mutex 的问题 读写锁 RWMutex 条件变量 Cond 等待组 WaitGroup 仅执行一次 Once 原子操作 其他 上一篇 <原生并发 go ...

  6. golang json 获取所有key_Golang —— JSON 大法

    「每一个程序员都无法逃脱 JSON 的命运魔爪」 JSON 简直就是一个神奇的玩意,只要是人类可以阅读的数据结构,基本都可以转成 JSON 的数据格式,其在各个平台.组件.模块中穿梭不止,使用上更是游 ...

  7. Golang websocket

    2019独角兽企业重金招聘Python工程师标准>>> 环境:Win10 + Go1.9.2 1.先下载并引用golang的websocket库 ①golang的官方库都在https ...

  8. golang中并发sync和channel

    golang中并发sync和channel chenbaoke · 2014-12-08 13:00:01 · 19151 次点击 · 预计阅读时间 5 分钟 · 不到1分钟之前 开始浏览 这是一个创 ...

  9. gophp解释器_【干货】Gisp 解释器 Golang 辅助开发工具

    Gisp 是一个提供给 golang 使用的 Lisp 类 DSL 解释器.在 Lisp 的基本语法基础上,针对 go 环境稍作了一点语法糖.主要目标是提供一个尽可能便于与 golang 互操作的微型 ...

最新文章

  1. PostgreSQL10.5安装后(Win10)环境变量配置与运行
  2. java数据库编程(JDBC)
  3. 二叉查找树(binary search tree)详解
  4. javascript,jquery 操作 dropdownlist ,select
  5. 视觉工程师面试指南_选择正确视觉效果的终极指南
  6. cocos2dx android运行Luac编译后的lua代码
  7. window.location.href 跳转失败
  8. 结构化数据上的机器学习大杀器XGBoost
  9. windows service 2008 R2 安装net4.6环境失败,windows service 2008 R2 升级sp1问题
  10. atitit...触发器机制 ltrigger mechanism sumup .的总结O8f
  11. (String)、toString()、String.valueOf区别
  12. 通用电气公司要破产?美国慌不慌?
  13. 机械设备故障诊断健康监测公开数据集
  14. 【免费赠送源码】Springboot篮球网站19133计算机毕业设计-课程设计-期末作业-毕设程序代做
  15. int 和 Integer
  16. 从苹果、SpaceX等高科技企业的产品发布会看企业产品战略和敏捷开发的关系
  17. 极客路由 链接密码_极客特惠:计算机,路由器和免费调音
  18. 微信群如何实现只接收红包消息提醒
  19. 芜湖市中专计算机考证英文名
  20. RESTful的意义及其使用规则

热门文章

  1. Struggling
  2. 关于Layout Constraint的动态update方式
  3. 大健康产业B2B2C多用户电商平台开发,开启数字化消费新蓝海
  4. java版我的世界怎么疾跑,我的世界怎么疾跑?疾跑快捷键介绍
  5. PMP-五大项目管理过程组
  6. Teams App自定义
  7. Teams Bot App 用户互动
  8. [图片校准(矫正)]——透射变换应用
  9. 路由器、AC、AP及POE交换机理解
  10. 在职MBA与普研、MEM是有区别的