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

引言

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

其实,i++ 是由 “读取-修改-写入” 三个操作序列组成的复合操作,要保证它们的原子性,否则就会出现数据不一致的情况。补充一下,什么是原子操作?原子操作,笔者最初是从《数据库原理》一书中了解到的,应用于事务上,事务的 ACID 四种特性,第一个就是 Atomic 原子性,它指由一组操作组成的操作集合,它们要么都做、要么都不做。i++ ,就是这类操作。

本文是根据笔者几年前的一篇旧文整理的,那时刚入行两年,

猜你喜欢

转载自blog.csdn.net/wojiushiwo945you/article/details/103693060