标签:如何 mil com microsoft period mamicode 替换 对象 图片
RCU的核心理念是读者访问的同时,写者可以更新访问对象的副本,但写者需要等待所有已存在读者完成访问之后,才能更新老对象。
这个过程实现的关键和难点就在于如何判断所有的读者已经完成访问,通常把写者开始更新,到所有已存在读者完成访问的这段时间叫做宽限期(Grace Period)。
内核中实现宽限期等待的函数是synchronize_rcu(),这个函数是rcu的核心,用来等待已存在读者的全部退出, 由写者调用。
图中每个矩形代表一个读线程,t2~t3时段为宽限期,假设写线程从t2时刻开始对副本进行更新:
Reader1在完限期开始之前已经完成读操作,无需考虑;
Reader2、Reader3、Reader4在进入宽限期之前已经进行读操作,所以写操作必须在Reader3完成之后(即t3时刻,所有的已存在读者均已完成)才能进行副本替换的动作;
Reader5、Reader6在宽限期开始之后才进行的读操作,无需考虑;
标签:如何 mil com microsoft period mamicode 替换 对象 图片
原文地址:https://www.cnblogs.com/tongyishu/p/13255089.html