当前位置: 首页 > news >正文

go--互斥锁

Go 标准库中提供了 sync.Mutex 互斥锁类型及其两个方法:

  • Lock
  • Unlock

可以通过在代码前调用 Lock 方法,在代码后调用 Unlock 方法来保证一段代码的互斥执行。参见 Inc 方法。也可以用 defer 语句来保证互斥锁一定会被解锁。

package mainimport ("fmt""sync""time"
)// SafeCounter 是并发安全的
type SafeCounter struct {mu sync.Mutexv  map[string]int
}// Inc 对给定键的计数加一
func (c *SafeCounter) Inc(key string) {c.mu.Lock()// 锁定使得一次只有一个 Go 协程可以访问映射 c.v。c.v[key]++c.mu.Unlock()
}// Value 返回给定键的计数的当前值。
func (c *SafeCounter) Value(key string) int {c.mu.Lock()// 锁定使得一次只有一个 Go 协程可以访问映射 c.v。defer c.mu.Unlock()return c.v[key]
}func main() {c := SafeCounter{v: make(map[string]int)}for i := 0; i < 1000; i++ {go c.Inc("somekey")}time.Sleep(time.Second)fmt.Println(c.Value("somekey"))
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux发展史
  • Servlet生命周期
  • WiFi通信——STM32通过ESP8266-01S与阿里云通信
  • Elasticsearch:Golang ECS 日志记录 - Logrus
  • 总结
  • Redis在SpringBoot中遇到的问题:预热,雪崩,击穿,穿透
  • kafka基础介绍
  • 卷与nfs实现多台主机容器之间的数据共享
  • 十、Docker版Redis集群搭建
  • DP学习——状态模式
  • idea将普通项目转换为maven项目
  • 使用JAVA代码实现生成二维码
  • windows网络应急排查
  • 以线程完成并发的UDP服务端
  • 使用kali对操作系统和网络服务类型进行探测
  • ECMAScript6(0):ES6简明参考手册
  • JavaScript函数式编程(一)
  • JS题目及答案整理
  • Mysql5.6主从复制
  • React系列之 Redux 架构模式
  • React中的“虫洞”——Context
  • ubuntu 下nginx安装 并支持https协议
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • VuePress 静态网站生成
  • 时间复杂度与空间复杂度分析
  • ionic入门之数据绑定显示-1
  • Java数据解析之JSON
  • PostgreSQL之连接数修改
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 第二十章:异步和文件I/O.(二十三)
  • 回归生活:清理微信公众号
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # linux 中使用 visudo 命令,怎么保存退出?
  • (02)Hive SQL编译成MapReduce任务的过程
  • (06)金属布线——为半导体注入生命的连接
  • (42)STM32——LCD显示屏实验笔记
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (接口封装)
  • (转)可以带来幸福的一本书
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 常见的偏门问题
  • .Net面试题4
  • /etc/shadow字段详解
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [Android Studio] 开发Java 程序
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [codeforces]Levko and Permutation
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [go 反射] 进阶
  • [Latex学习笔记]数学公式基本命令
  • [leetcode] 61. 旋转链表