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 美国
Mutex = spin lock + queue
1 回复 分享
发布于 2023-06-06 17:30 美国
spinlock
1 回复 分享
发布于 2023-05-24 16:24 广东
C++11 原子变量
1 回复 分享
发布于 2023-05-02 15:57 北京
这属于多线程八股么
1 回复 分享
发布于 2023-04-29 10:38 江苏
自旋锁
1 回复 分享
发布于 2023-04-27 19:34 陕西
读写锁?
1 回复 分享
发布于 2023-04-27 14:21 山东
CAS,基本靠原子操作的自旋锁实现
点赞 回复 分享
发布于 2023-05-06 14:40 香港
m
点赞 回复 分享
发布于 2023-05-01 11:05 上海
我知道Java中是偏向锁和轻量级锁
点赞 回复 分享
发布于 2023-04-29 04:23 白俄罗斯
原子操作吧,如果比这个还轻量只能是内存屏障了,但是严格意义上来讲内存屏障是不是不算锁
点赞 回复 分享
发布于 2023-04-28 22:59 北京
乐观锁?
点赞 回复 分享
发布于 2023-04-27 15:39 广东

相关推荐

面试官很友善, 对项目是刨根问底,对项目提出的缺点令人难堪, 只能不断道歉。【面试问题】🎯 **自我介绍与项目概览**1. 请用 3-4 分钟做一个简洁的自我介绍,突出技术栈与研究方向即可,项目细节稍后展开。🧠 **算法与代码能力**2. 🔢 给定一个整数数组,要求用 O(n) 时间、O(1) 额外空间输出每个位置“除自身外所有元素的乘积”,请阐述思路并现场共享屏幕写出 C++ 代码。3. 📈 给定一个整数数组,说明如何转化为最长非递减子序列问题,并现场共享屏幕写出 C++ 代码。4. ✂️ 针对最长非递减子序列的代码,请进一步压缩中间数组,真正做到 O(1) 额外空间。🔍 **C/C++ 语言与内存管理**5. 🆚 请比较 C++ 的 new/delete 与 C 的 malloc/free 的差异。6. 🧩 malloc/free 的底层实现流程是什么?7. 🔎 实际项目中如何定位内存泄漏?如果没有 Valgrind 这类工具,如何实现内存泄漏检测器?8. 💥 描述一种“栈崩但栈顶代码无异常”的实际场景,并解释其成因与排查思路。🛰 **xxx项目深挖**9. 🌐 概述你在观测平台项目中的角色、系统功能与业务价值。10. 🧱 画出数据流向图并说明11. ⚖️ 为什么引入 Redis Stream 作为消息队列?削峰填谷的具体策略与降级方案是什么?如果消费速度持续低于生产速度,如何避免 Redis 内存爆掉?12. 🗂️ Redis Stream 与 List、Pub/Sub 在消息队列场景下的优劣对比;ACK 机制与消费组在内部是如何实现的?13. 🔄 如果去掉 Redis Stream, 直连数据库,你会如何重新设计流量控制与降级逻辑?问有没有看过 redis 源码? 没看过为什么要用消息队列?  面试官觉得完全没必要。只能不断道歉。了解过 stream 的实现吗?  没有📁 **xxx项目深挖**16. 🔧 为何不用 HTTP/RPC?  回答不了, 实际上项目只是玩票。17. ⏳ 当前实现中有没有通知机制?18. 🌐 如果改用 RESTful API,用 URL 路径同样模拟层级结构,不是也可以吗?  确实是。玩具项目, 和生产实际不太相关。
查看19道真题和解析
点赞 评论 收藏
分享
评论
38
145
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务