-race 属性用来做竞态监测,判断是否存在并发读写单个变量的情况。在执行 go testgo buildgo run 的时候都可以执行这个参数。

这个检测是发生在运行时的,如果你的代码没有被执行,那么是无法监测出来的。存在并发不写不一定有问题,但是做到心知肚明,能避免一些无意识的小坑。

func main() {var wg sync.WaitGroupwg.Add(10)for i := 0; i < 10; i++ {go func() {defer wg.Done()fmt.Println(i)}()}wg.Wait()
}

多个 goroutine 协程并发打印递归值,肯定是有问题的,最终会出现很多重复的输出。如果我们使用静态编译运行这段代码:

 go run -race main.go

观察控制台的输出,明确的打印了读和写并发冲突的代码行号,以及对应的 goroutine 创建信息

如果你使用的是 goland 开发工具,我们可以执行在编译环境变量中指定 -race 属性


官方文档地址:https://go.dev/doc/articles/race_detector

golang race 竞态检测相关推荐

  1. golang data race 竞态条件

    golang race condition 竞态条件 data race race condition golang race detector golang的协程机制使得编写并发代码变得非常容易,但 ...

  2. Go(Golang)_12_竞态

    Go_12_竞态 竞态 互斥锁 读写锁 初始锁 上下文 emptyCtx cancelCtx timerCtx valueCtx 常用函数 通道 无缓冲通道 缓冲通道 单向通道 多路复用 实现原理 竞 ...

  3. eclipse运行go test_在 Go 中发现竞态条件 (Race Conditions)

    当我意识到我一直在处理和解决的问题有一个专有名词描述的时候,我总会觉得这事十分有趣.这次出现这种情况的是竞争条件(Race Conditions).当你处理多个 routine 共享某类资源的时候,不 ...

  4. 数据争用(data race) 和竞态条件(race condition)

    在有关多线程编程的话题中,数据争用(data race) 和竞态条件(race condition)是两个经常被提及的名词,它们两个有着相似的名字,也是我们在并行编程中极力避免出现的.但在处理实际问题 ...

  5. 竞态条件(race condition)

    在学习多线程的过程中,因为是非科班学生,操作系统的东西都是一知半解的,所以很多名词都没有理解,另外具体的Java虚拟机如何工作还需要后续的学习,这里只能慢慢学习了,等到这本书看完好好读读操作系统的东西 ...

  6. python 很高兴问题_Python 3.7曾有一个很老的GIL竞态条件(race condition),我是这么解决的...

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 作者:Victor Stinner 作为Python最关键的组成部分之一:GIL(全局解释器锁),我花了4 ...

  7. 别混淆数据争用(data race) 和竞态条件(race condition)

    在有关多线程编程的话题中,数据争用(data race) 和竞态条件(race condition)是两个经常被提及的名词,它们两个有着相似的名字,也是我们在并行编程中极力避免出现的.但在处理实际问题 ...

  8. 雪城大学信息安全讲义 五、竞态条件

    五.竞态条件 原文:Race Condition Vulnerability 译者:飞龙 1 竞态条件漏洞 下面的代码段属于某个特权程序(即 Set-UID 程序),它使用 Root 权限运行. 1: ...

  9. 计算机系统学习之(1):基础知识概要——进程、中断、线程、竞态条件、关键区域、死锁、进程调度

    文章目录 进程的创建 哪些事件导致进程的创建 fork 和 exec 命令创建和控制进程 fork() 命令 execve() 命令 进程的状态 中断 中断的种类 线程 线程共享内容 线程独有内容 进 ...

最新文章

  1. Ubuntu 14.04 opencv 2.4.9 安装
  2. 参考: 40个轻量级 JavaScript 库
  3. shell-4.bash的变量:用户自定义变量
  4. C#中动态加载卸载类库
  5. SQLi LABS Less 26a 联合注入+布尔盲注
  6. matlab代码 无标度网络 生成图,标准无标度网络matlab
  7. Structs详细用法(一)
  8. Google Guice @Inject注解的使用
  9. CRMEB Min电商系统商城源码 v4.3.2
  10. 手机端如何破解wifi密码
  11. 临床实验中关于 T 检验的应用与解释
  12. 中国石油大学(北京)-《 修井工程》第二阶段在线作业
  13. 高频面试之Eureka
  14. ODOO 开源 ERP 和 CRM
  15. java comp_java:comp / env /做什么?
  16. 如何检测猥琐的私有SDWAN隧道协议
  17. python中的可迭代是什么意思,Python中的迭代和可迭代对象
  18. Android对现有的apk进行修改(汉化,修改QQ尾巴)
  19. Android在Service中注册动态广播接收者
  20. JQuery渐变色动画效果

热门文章

  1. 12月17日云栖精选夜读 | 用PrettyPrinter,让Python输出更漂亮,你值得拥有
  2. 4.3 使用色阶命令调整图像亮度和对比度 [原创Ps教程]
  3. 依托大数据 破解中小商企信用难题
  4. 高考录取查询系统被植入挖矿代码;日本百亿亿次超算已完成 CPU 开发
  5. 同时安装pytorch和TensorFlow等多种深度学习开发环境(1)
  6. Java Swing--学生信息管理系统
  7. 【指纹识别】基于模板匹配算法实现指纹录入打卡系统附matlab代码
  8. pymssql数据库操作
  9. java 轻量级 job_oxygen: 一个轻量级Java框架,包含ioc、aop、config、cache、job、Jdbc、web等...
  10. 如何正确注册Tushare