面试真题

操作系统 · 中等 · 字节跳动

读写锁是怎么实现的

中等 操作系统 🎤 字节跳动
参考答案
结论:读写锁采用状态拆分与等待队列实现读共享、写独占。核心要点:1. 用一个原子变量记录状态,如高位存读线程数、低位存写锁标志;2. 读锁获取时若无写者则CAS增加读计数,可重入;3. 写锁获取时CAS抢占写标志并自旋等待读计数为0;4. 为避免饥饿常采用写优先策略,写者到来后阻塞新读者;5. 示例:Java AQS中state高16位读计数,低16位写计数,配合等待队列实现。原理:基于互斥量+条件变量或自旋锁,读者间无竞争,写者独占访问。
题目整理自公开面经,答案由校招宝自研生成,仅供参考