• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






peteryan

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2021年5月8日

模块三 GO语言实战与应用-sync.WaitGroup和sync.Once
摘要: 我们在前几次讲的互斥锁、条件变量和原子操作都是最基本重要的同步工具。在 Go 语言中,除了通道之外,它们也算是最为常用的并发安全工具了。 说到通道,不知道你想过没有,之前在一些场合下里,我们使用通道的方式看起来都似乎有些蹩脚。 比如:声明一个通道,使它的容量与我们手动启用的 goroutine 的数 阅读全文
posted @ 2021-05-08 08:00 lvp 阅读(166) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-原子操作(下)
摘要: 我们接着上一篇文章的内容继续聊,上一篇我们提到了,sync/atomic包中的函数可以做的原子操作有:加法(add)、比较并交换(compare and swap,简称 CAS)、加载(load)、存储(store)和交换(swap)。并且以此衍生出了两个问题。 今天我们继续来看第三个衍生问题: 比 阅读全文
posted @ 2021-05-08 07:32 lvp 阅读(127) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-原子操作(上)
摘要: 我们在前两篇文章中讨论了互斥锁、读写锁以及基于它们的条件变量,先来总结一下。 互斥锁是一个很有用的同步工具,它可以保证每一时刻进入临界区的 goroutine 只有一个。读写锁对共享资源的写操作和读操作则区别看待,并消除了读操作之间的互斥。 条件变量主要是用于协调想要访问共享资源的那些线程。当共享资 阅读全文
posted @ 2021-05-08 07:21 lvp 阅读(153) 评论(0) 推荐(0)