现在的位置: 首页 > 综合 > 正文

N3中Singleton的古怪问题

2019年03月19日 ⁄ 综合 ⁄ 共 481字 ⁄ 字号 评论关闭

     今天用nebula3的THREAD创建了一个线程,专门用于渲染场景.

     其中出现了一个奇怪的问题,被创建了的线程对象设置为SINGLETON,但是并未对其进行RELEASE,线

程对象对应的Singleton变为了NULL.

于是开始查找是Singleton被改了,还是内存被释放了.

设置全局变量观察发现内存并没有被释放,那么就是Singleton被更改了,仔细设置断点一步步查看,发现

Singleton有时为NULL(在次线程中),有时为有用值(在主线程中),于是开始思考是什么原因导致该现象

的出现.

     线程的对象是在主线程中创建的,该成员为类的静态数据成员,应该是存放在全局数据区.在次线程中

访问该数据区时出现了问题.最后采用传指针的方式来对该线程对象进行访问,没有对静态数据Singleton

进行访问了.个人认为这可能是因为次线程无法访问到主线程中定义对象的静态数据,尝试在次线程中定义

了一个对象,发现主线程中也无法看到它的静态数据Singleton,同样为NULL,猜测这可能是一种防止线程

之间静态数据被多个线程访问的措施。有待继续考证。

 

抱歉!评论已关闭.