锁
C++中比互斥锁更轻量级的锁是什么,面试被问两次了,球球了。
全部评论
如果不是自旋锁就是原子锁了。这两个都比互斥锁轻量级
在C++中比互斥锁更轻量级的锁是自旋锁(spinlock)。
自旋锁是一种基于忙等待(busy-waiting)的锁,它在获取锁时不会将线程挂起,而是会一直循环检查锁是否可用,直到获取到锁为止。自旋锁适用于锁保持时间短且线程竞争不激烈的场景,因为在竞争激烈的情况下,线程可能会一直循环等待,浪费大量的CPU时间。
与互斥锁相比,自旋锁的优点是它不会涉及线程的上下文切换(context switching),因为线程不会被挂起。这使得自旋锁的效率比互斥锁更高,尤其是在多核CPU上。
但自旋锁也有其缺点。因为线程会一直循环等待,所以自旋锁在竞争激烈的情况下可能会导致CPU占用率过高,从而影响系统的整体性能。此外,自旋锁只适用于多核CPU,因为在单核CPU上自旋锁会导致死锁。

啥叫原子锁?不就是自旋锁么,你看各种开源项目的spin lock,不都是用atomic实现的,可能再加点pause优化
临界区 原子操作
分情况吧,开放性问题答案不唯一,单核机器vs多核,用户态vs内核态,场景不一样,有原子操作,读写锁,信号量、内存屏障,以及是否能借助硬件层面的帮助。比如线程数量为2和不为2、能借助的工具是不一样的。
Mutex = spin lock + queue
spinlock
C++11 原子变量
这属于多线程八股么
自旋锁
读写锁?
CAS,基本靠原子操作的自旋锁实现
m
我知道Java中是偏向锁和轻量级锁
原子操作吧,如果比这个还轻量只能是内存屏障了,但是严格意义上来讲内存屏障是不是不算锁
乐观锁?
相关推荐
点赞 评论 收藏
分享
10-12 19:23
重庆邮电大学 Java
敢逐云霄志:你打招呼语怎么能这么长,hr都没看下去的欲望,简明扼要说重点,就读于某某学校某某专业,26届应届毕业生,学信网可查,先后在某某公司实习过(如有),然后做过什么项目,想找一份什么样的工作,可实习几个月以上,期待您的回复。 点赞 评论 收藏
分享
10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧 点赞 评论 收藏
分享

汤臣倍健公司氛围 390人发布