社区
Linux_Kernel
帖子详情
为什么锁会降低程序的性能?
_薛定谔猫
2019-03-28 03:05:21
我之前看过文章说的是锁降低性能降低在多个线程争夺锁,内核态和用户态之间的切换,想问一下切换在哪?锁是在内核中管理的么?
...全文
1385
6
打赏
收藏
为什么锁会降低程序的性能?
我之前看过文章说的是锁降低性能降低在多个线程争夺锁,内核态和用户态之间的切换,想问一下切换在哪?锁是在内核中管理的么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JFET238
2019-08-06
打赏
举报
回复
加解锁和线程切换 都要系统开销的
lyfll
2019-07-17
打赏
举报
回复
每一个请求都会占用一个线程,例如,当请求量过大,此服务器设计规定可跑1000线程,当并发达或者请求量同时超过1000线程时,并且系统未处理完请求,这些线程就是独占,所有超过1000的线程就要进行排队,倒置线程堵塞。
zhgure
2019-07-16
打赏
举报
回复
楼上说的很好了,补充一下二楼说的,切换发生在B阻塞发生时,本来B线程是当前正在占用CPU的,由于发生了阻塞,所以B线程被切换了,CPU又调度到别的线程执行。
zgsdgrr
2019-07-10
打赏
举报
回复
因为就像是马路上的红绿,汽车跑到红灯的时候会停下来,绿灯才能继续跑
john_liqinghan
2019-04-26
打赏
举报
回复
linux上下文切换的代价是很大的。
xh.wang
2019-04-24
打赏
举报
回复
应该这么理解,比如2个线程用一个锁。当A先调用锁,锁住,然后进行处理。这时候B假如要用该锁,那就必须等A解锁才可以使用,这个时候B是阻塞的。
操作系统不是本身就中断吗,为什么要说上
锁会
导致上下文切换造成
性能
开销呢
操作系统是中断驱动的,中断是操作系统高效运作的基础。锁是多线程编程中用来解决数据竞争问题的同步机制。锁 (特别是互斥锁) 在线程等待锁时,会导致线程进入阻塞睡眠状态,触发上下文切换。上下文切换本身是有开销的,频繁的上下文切换会
降低
程序
性能
。锁的
性能
开销不是锁本身的问题,而是等待锁和上下文切换带来的。合理使用锁,减少锁的竞争,避免不必要的上下文切换,是提高多线程
程序
性能
的关键。操作系统中断和锁导致的上下文切换,是发生在不同层面的,服务于不同的目的。
【Spring】高并发下如何提高“锁”
性能
?
在项目中,尤其是电商或者做游戏开发的,高并发是必然的,但在高并发的环境下,大家会经常使用到锁。“锁” 是最常用的同步方法之一。但激烈的锁竞争会导致
程序
的
性能
下降,严重的甚至能导致 “死锁”的产生。这个时候,可能会有小伙伴会说,可以使用多线程啊。使用多线程的确可以明显地提高系统的
性能
。但事实上,使用多线程的方式会额外增加系统的开销。对于多线程应用来说, 系统除了处理功能需求外,还需要额外维护多线程环境的特有信息,如线程本身的元数据、线程的调度、线程上下文的切换等。
自旋锁的优缺点?
自旋锁不会引起调用者休眠,如果自旋锁已经被别的线程保持,调用者就一直循环在那里看是否该自旋 锁的保持者释放了锁。由于自旋锁不会引起调用者休眠,所以自旋锁的效率远高于互斥锁。 虽然自旋锁效率比互斥锁高,但它会存在下面两个问题: 1、自旋锁一直占用CPU,在未获得锁的情况 下,一直运行,如果不能在很短的时间内获得锁,会导致CPU效率
降低
。 2、试图递归地获得自旋
锁会
引起死锁。递归
程序
决不能在持有自旋锁时调用它自己,也决不能在递归调用时试图获得相同的自旋 锁。 由此可见,我们要慎重的使用
数据库并发控制 你选乐观锁还是悲观锁?
在这里,我们将讨论的是在实际生产过程中,对于并发控制你是选择乐观锁还是悲观锁。这两种锁各自的应用环境应该怎样选择? 实际生产环境里边,如果并发量不大,完全可以使用悲观锁定的方法,这种方法使用起来非常方便和简单。但是如果系统的并发非常大的话,悲观锁定会带来非常大的
性能
问题,所以就要选择乐观锁定的方法。 悲观锁假定其他用户企图访问或者改变你正在访问、更改的对象的概率是很高的,因
锁为什么是低效率的?
并发编程学习笔记学习的内容这本书讲述了什么怎样讲述的为什么要这样讲述如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 学习的内容 这系列学习笔记是基于linux ...
Linux_Kernel
4,465
社区成员
17,462
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章