1.Variable类
Variable是所有bvar的基类,是一个纯虚类。拥有的唯一的成员变量是_name。
Variable类中的接口分为几类:
- 描述相关的

子类实现纯虚函数describe,目的是将bvar的值写入ostream。
get_description不是纯虚函数,它调用了describe写入ostringstream,返回ostringstream的string。
- 曝光相关的
例如:expose,expose_impl,expose_as,list_exposed,count_exposed,describe_exposed,dump_exposed等。核心是expose_impl,下文介绍。
函数expose_impl

函数expose_impl是实现曝光的核心逻辑。所谓“曝光”就是把bvar的地址存到一个公共的map中,以便后续可以遍历和查询到。
具体的做法是:
(1)根据prefix+name生成统一格式的曝光名称_name:非字母、非数字的全部转成下划线
(2)根据(1)生成的曝光名称_name查询所属的VarMapWithLock:
首先对_name进行了简单的hash,然后对VarMapWithLock数组s_var_maps的长度SUB_MAP_COUNT取模得到i,返回s_var_maps的第i个成员。这里这么做的目的是为了减少VarMapWithLock

本文详细解读了Variable类的描述和曝光功能,以及Reducer类如何实现累加和采样。重点介绍了expose_impl函数、Adder类及其在bvar管理中的作用。
Variable、Reducer和Adder&spm=1001.2101.3001.5002&articleId=124790938&d=1&t=3&u=d6c7dcebc52e433991b5b9fb2b20e2a4)
923

被折叠的 条评论
为什么被折叠?



