C++中比互斥锁更轻量级的锁是什么,面试被问两次了,球球了。
全部评论
如果不是自旋锁就是原子锁了。这两个都比互斥锁轻量级
19 回复 分享
发布于 2023-04-28 12:04 北京
在C++中比互斥锁更轻量级的锁是自旋锁(spinlock)。 自旋锁是一种基于忙等待(busy-waiting)的锁,它在获取锁时不会将线程挂起,而是会一直循环检查锁是否可用,直到获取到锁为止。自旋锁适用于锁保持时间短且线程竞争不激烈的场景,因为在竞争激烈的情况下,线程可能会一直循环等待,浪费大量的CPU时间。 与互斥锁相比,自旋锁的优点是它不会涉及线程的上下文切换(context switching),因为线程不会被挂起。这使得自旋锁的效率比互斥锁更高,尤其是在多核CPU上。 但自旋锁也有其缺点。因为线程会一直循环等待,所以自旋锁在竞争激烈的情况下可能会导致CPU占用率过高,从而影响系统的整体性能。此外,自旋锁只适用于多核CPU,因为在单核CPU上自旋锁会导致死锁。
17 回复 分享
发布于 2023-05-02 11:23 北京
啥叫原子锁?不就是自旋锁么,你看各种开源项目的spin lock,不都是用atomic实现的,可能再加点pause优化
12 回复 分享
发布于 2023-04-28 17:52 江苏
临界区 原子操作
7 回复 分享
发布于 2023-04-28 09:46 上海
分情况吧,开放性问题答案不唯一,单核机器vs多核,用户态vs内核态,场景不一样,有原子操作,读写锁,信号量、内存屏障,以及是否能借助硬件层面的帮助。比如线程数量为2和不为2、能借助的工具是不一样的。
2 回复 分享
发布于 2023-04-29 05:05 美国
读写锁?
1 回复 分享
发布于 2023-04-27 14:21 山东
自旋锁
1 回复 分享
发布于 2023-04-27 19:34 陕西
这属于多线程八股么
1 回复 分享
发布于 2023-04-29 10:38 江苏
C++11 原子变量
1 回复 分享
发布于 2023-05-02 15:57 北京
spinlock
1 回复 分享
发布于 2023-05-24 16:24 广东
Mutex = spin lock + queue
1 回复 分享
发布于 2023-06-06 17:30 美国
乐观锁?
点赞 回复 分享
发布于 2023-04-27 15:39 广东
原子操作吧,如果比这个还轻量只能是内存屏障了,但是严格意义上来讲内存屏障是不是不算锁
点赞 回复 分享
发布于 2023-04-28 22:59 北京
我知道Java中是偏向锁和轻量级锁
点赞 回复 分享
发布于 2023-04-29 04:23 白俄罗斯
m
点赞 回复 分享
发布于 2023-05-01 11:05 上海
CAS,基本靠原子操作的自旋锁实现
点赞 回复 分享
发布于 2023-05-06 14:40 香港

相关推荐

03-11 21:32
已编辑
中国海洋大学 Java
查看28道真题和解析
点赞 评论 收藏
分享
日期: 一面(3.11)岗位:后端开发实习生地点:杭州背景:  双非科班、两段实习经历一面其实还是以基础为主,前面回答的还行,但是最后算法没写好,用暴力做还卡壳了1. 自我介绍2. 问比赛经历3. 大概说下最近一段实习做了什么事情?4. 讲讲RBAC,有了解过其他的权限模型吗?你做这个需求过程中你的角色是什么?5. 经典:实习过程中的难点、有成就的地方,如何解决?6. 讲讲双Token模式,你们的短token过期时间是多少?那有刷新Refresh token的功能吗?为什么要用双token模式?用Refresh token去刷新Access token的时候需要带上什么,怎么保证安全的?7. 策略模式这块具体是怎么实现的,你们这个项目还用到了哪些设计模式?除此之外你还了解哪些设计模式?8. 抽象工厂模式和普通工厂模式有什么区别?9. 线程的状态有哪些?状态是怎么转变的?10. 线程池有哪些参数?11. 拒绝策略有哪几种?12. 什么是死锁,为什么会出现死锁?一般可以通过什么方法避免死锁?13. 死锁怎么排查?14. 针对死锁能说一个具体的例子吗?循环等待能举个例子吗?15. 有遇到过线上比如内存溢出的问题吗?一般要怎么解决?16. MySQL的最左匹配原则是什么?匹配不到一般是什么情况?17. Like查询会走索引吗?18. 对Go了解吗,比如GMP模型?19. 算法:长度最小的子数组#字节##牛客AI配图神器#
查看19道真题和解析
点赞 评论 收藏
分享
评论
38
145
分享

创作者周榜

更多
牛客网
牛客企业服务