RCU(Read-Copy Update) RCU就是指读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构,读操作不需要获得任何锁就可以访问,但写操作在访问它时首先拷贝一个副本,然后对副本进行修改,最后在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。
RCU主要就是通过一种无锁的方法修复上述问题,该方法会使写者的速度变慢,但是读者能不用锁、不需要写入内存,速度会明显变快。 对于链表修改的情况,RCU是禁止发生的,因此需要把链表修改替换为链表结点替换: H1 -> E1 -> E2 -> E3 -> E4H1 -> E1 E2 -> E3 -> E4|---> E2' --^ 例如修改E2结点,...
无锁化编程有哪些常见方法?()A.针对计数器,可以使用原子加B.只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)C.RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟释放的做法D.CAS(Compare-and-Swap),如无锁栈,无锁队列等待 相关知识点: 试题来源: 解析 D 反馈...
RCU就是指读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构,读操作不需要获得任何锁就可以访问,但写操作在访问它时首先拷贝一个副本,然后对副本进行修改,最后在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。 Linux内核中内存管理...