简单来说,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


本文详细介绍了在OSG框架中如何通过osg::object及其派生类来管理键值对数据。具体包括数据的存储结构、键值对的设置方式及线程安全性等关键概念。
561

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



