博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
同步锁/互斥锁
阅读量:5249 次
发布时间:2019-06-14

本文共 753 字,大约阅读时间需要 2 分钟。

互斥锁:是为了避免多个线程抢夺资源造成数据不准确问题而提出的,是为了限制同一时刻多个线程访问同一个数据.

首先需要了解两个概念:

1>多线程并发执行:我们都知道,如果不涉及两个线程之间传值或是共享资源的时候,多个线程之间是没有交集的,你走你的阳关道我走我的独木桥, 井水不犯河水,但是如果需要传值或是共享资源两个线程之间就有了碰头的机会.所以又出了一个线程同步的概念.

2>多线程同步执行:如果单从字面理解很难说清楚有什么区别,都是说多个线程在同一时刻各自做各自的事情,本来不同线程之间就没有什么关系, 这是多线程产生的意义.从多线程产生的意义来说,这个"同步执行"是不正常的!什么意思呢>本来都是独立的线程没有所谓的先后的顺序的,可是这个同步执行,就要求线程之间要有个顺序,所以他是非自然的,是人为扭曲的线程状态.我们通过代码来实现的多线程之间有序的执行的假象

好的我来多个比喻,比如两个中国人一个在南方一个在北方不认识没交集,两个人各自独立的生活,没什么关系,但是他们都要从北京飞到上海,且坐了同一班飞机,假设一次只能有一个人过安检,这个时候就要有个先后顺序,所以安检就是一把锁,这就是同步执行的一个场景,还有其他场景像之前文章写的断点续传,也是多线程碰面的场景,这个比喻与下面说的同步锁的场景有点不贴切,我是着重说了一下多线程碰面的场景,自己体会一下.上代码,程序是模拟多个窗口卖票的过程.

##还有那个锁不能加到循环外面:单说程序也不好说,我还是做个比喻,你家有三个卧室,你的目的是不然人进入你老婆的房间,你只要把你老婆卧室的门锁上就可以了,不是把房门锁上,那样客厅和其他卧室都不能进人了!

转载于:https://www.cnblogs.com/LDSmallCat/p/4960898.html

你可能感兴趣的文章
Paper Reading: Relation Networks for Object Detection
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>
提高PHP性能的10条建议
查看>>
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>