如何通过分段锁技术解决并发环境中的资源竞争问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2522个文字,预计阅读时间需要11分钟。
目录+问题描述+测试代码+测试1:不使用锁+测试2:使用全局锁(大锁)+测试3:使用分段锁+测试结果+测试代码简介+他人的经验,我们的阶梯!+在开发中经常遇到多个并发执行的线程。
目录- 问题描述
- 测试代码
- 测试1:不使用锁
- 测试2:使用一把全局锁(大锁)
- 测试3:使用分段锁
- 测试结果
- 测试代码简介
在开发中经常遇到多个并发执行的线程,需要对同一个资源进行访问,也就是发生资源竞争。
在这种场景中,一般的做法就是加锁,通过锁机制对临界区进行保护,以达到资源独占的目的。
这篇文章主要描述的就是使用分段锁来解决这个问题,说起来很简单:就是把锁的粒度降低,以达到资源独占、最大程度避免竞争的目的。
问题描述周末和朋友聊天说到最近的工作,他们有个项目,需要把之前的一个单片机程序,移植到x86平台。
由于历史的原因,代码中到处都充斥着全局变量,你懂得:在以前的单片机中充斥着大量的全局变量,方便、好用啊!
在代码中,尽量避免使用全局变量。坏处有:不方便模块化,函数不可重入,耦合性大。。。
由于大部分的单片机都只有一个CPU,是真正的串行操作。
也许你会说:会发生中断啊,这也是一种异步操作。
没错,但是可以在访问全局变量的地方把中断关掉,这样就不会避免了资源竞争的情况了。
本文共计2522个文字,预计阅读时间需要11分钟。
目录+问题描述+测试代码+测试1:不使用锁+测试2:使用全局锁(大锁)+测试3:使用分段锁+测试结果+测试代码简介+他人的经验,我们的阶梯!+在开发中经常遇到多个并发执行的线程。
目录- 问题描述
- 测试代码
- 测试1:不使用锁
- 测试2:使用一把全局锁(大锁)
- 测试3:使用分段锁
- 测试结果
- 测试代码简介
在开发中经常遇到多个并发执行的线程,需要对同一个资源进行访问,也就是发生资源竞争。
在这种场景中,一般的做法就是加锁,通过锁机制对临界区进行保护,以达到资源独占的目的。
这篇文章主要描述的就是使用分段锁来解决这个问题,说起来很简单:就是把锁的粒度降低,以达到资源独占、最大程度避免竞争的目的。
问题描述周末和朋友聊天说到最近的工作,他们有个项目,需要把之前的一个单片机程序,移植到x86平台。
由于历史的原因,代码中到处都充斥着全局变量,你懂得:在以前的单片机中充斥着大量的全局变量,方便、好用啊!
在代码中,尽量避免使用全局变量。坏处有:不方便模块化,函数不可重入,耦合性大。。。
由于大部分的单片机都只有一个CPU,是真正的串行操作。
也许你会说:会发生中断啊,这也是一种异步操作。
没错,但是可以在访问全局变量的地方把中断关掉,这样就不会避免了资源竞争的情况了。

