简单来说,object设置键值对就是添加键值对(如果还没有这个键),
一,放入位置osg::object<---_userDataContainer<---------_objectList;
1,udc是_userDataContainer
2,_userDataContainer是object类成员变量
3,osg::DefaultUserDataContainer类派生自osg::UserDataContainer
4,_objectList是osg::DefaultUserDataContainer类的成员变量
5,UserValueObject键值对添加到_objectList
6,_userDataContainer具有唯一性
二,放入的键值对:值直接设置,键是通过UserValueObject<--------TemplateValueObject<T><------------object
1,,UserValueObject类实际上是TemplateValueObject<T>类
2,,TemplateValueObject派生自ValueObject,
3,添加键值对使用的构造函数
4,值是TemplateValueObject类的成员函数,是个模板
5,key来自于基类ValueObject
6,ValueObject派生自osg::object
7,osg::object计数线程安全,且把_userDataContainer初始值设为空
8,线程安全涉及到了原子操作(指针和值)
9,其中,原子操作涉及到了不同的操作系统上锁,(以AND为例)
10,跑远了,拉回来.ValueObject的键是通过基类object设置
根据key找object