news 2026/5/1 7:39:16

第五章:并发编程(下)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第五章:并发编程(下)

并发安全和锁

有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。类比现实生活中的例子有十字路口被各个方向的的汽车竞争;还有火车上的卫生间被车厢里的人竞争。

举个例子:

var x int64 var wg sync.WaitGroup func add() { for i := 0; i < 5000; i++ { x = x + 1 } wg.Done() } func main() { wg.Add(2) go add() go add() wg.Wait() fmt.Println(x) }

上面的代码中我们开启了两个goroutine去累加变量x的值,这两个goroutine在访问和修改x变量的时候就会存在数据竞争,导致最后的结果与期待的不符。

1.1.1. 互斥锁

互斥锁是一种常用的控制共享资源访问的方法,它能够保证同时只有一个goroutine可以访问共享资源。Go语言中使用sync包的Mutex类型来实现互斥锁。 使用互斥锁来修复上面代码的问题:</

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 14:40:36

思源笔记性能提升300%的7个实战技巧

思源笔记性能提升300%的7个实战技巧 【免费下载链接】siyuan A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang. 项目地址: https://gitcode.com/GitHub_Trending/si/siyuan 你的思源笔记是…

作者头像 李华
网站建设 2026/4/25 5:51:06

原神抽卡数据分析实战:用智能工具优化你的游戏策略

原神抽卡数据分析实战&#xff1a;用智能工具优化你的游戏策略 【免费下载链接】genshin-wish-export biuuu/genshin-wish-export - 一个使用Electron制作的原神祈愿记录导出工具&#xff0c;它可以通过读取游戏日志或代理模式获取访问游戏祈愿记录API所需的authKey。 项目地…

作者头像 李华
网站建设 2026/5/1 6:57:52

5个技巧快速检测外置硬盘健康状态 - smartmontools完整指南

5个技巧快速检测外置硬盘健康状态 - smartmontools完整指南 【免费下载链接】smartmontools Official read only mirror of the smartmontools project SVN 项目地址: https://gitcode.com/gh_mirrors/smar/smartmontools 在数字时代&#xff0c;硬盘数据安全是每位用户…

作者头像 李华
网站建设 2026/5/1 5:57:57

原神抽卡记录导出工具完整使用指南

原神抽卡记录导出工具完整使用指南 【免费下载链接】genshin-wish-export biuuu/genshin-wish-export - 一个使用Electron制作的原神祈愿记录导出工具&#xff0c;它可以通过读取游戏日志或代理模式获取访问游戏祈愿记录API所需的authKey。 项目地址: https://gitcode.com/Gi…

作者头像 李华
网站建设 2026/5/1 5:57:30

Upscayl AI图像放大:五大常见问题与解决方案全解析

Upscayl AI图像放大&#xff1a;五大常见问题与解决方案全解析 【免费下载链接】upscayl &#x1f199; Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy. 项目地址: https://gitcode.com/GitHub_Trendin…

作者头像 李华
网站建设 2026/5/1 5:57:40

终极AI编程助手:OpenCode VSCode插件完整使用指南

终极AI编程助手&#xff1a;OpenCode VSCode插件完整使用指南 【免费下载链接】opencode 一个专为终端打造的开源AI编程助手&#xff0c;模型灵活可选&#xff0c;可远程驱动。 项目地址: https://gitcode.com/GitHub_Trending/openc/opencode 你是否厌倦了在终端和编辑…

作者头像 李华