并发案例:如何保证统计变量的原子性

给你一囗甜甜゛ 提交于 2019-12-25 16:29:54

引言

i++ 这个简单的语句,想必大家都不陌生,但是在多线程环境下,如果 i 是一个全局共享变量,那么它还能正确地按顺序累加吗?这就是本文要介绍的内容,如何保证统计变量的原子性。

其实,i++ 是由 “读取-修改-写入” 三个操作序列组成的复合操作,应该保证它们的原子性,否则就会出现数据不一致的情况。本文是根据笔者几年前的一篇旧文整理的,那时刚入行两年,并发编程经验几乎为零。

i++ 数据不一致案例分析

案例描述

笔者早年参与的一个项目中,需要对一个 http 请求请求结果进行统计,得到失败和成功的请求总数。一起合作的同事定义了两个全局共

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!