摘要:
刚刚看了Ogre中的引用计数指针实现,在OgreShared.h中,严格说,它算不上智能指针比如: int * t = new int(5) sharedPtr<int> t1(t); sharedPtr<int> t2(t),则t1,t2中都会有一次引用计数,可能如它的名字那样,只是共享指针而已。下面是我的测试代码:[代码] 阅读全文
摘要:
刚刚看了Ogre中的引用计数指针实现,在OgreShared.h中,严格说,它算不上智能指针比如: int * t = new int(5) sharedPtr<int> t1(t); sharedPtr<int> t2(t),则t1,t2中都会有一次引用计数,可能如它的名字那样,只是共享指针而已。下面是我的测试代码:[代码] 阅读全文
摘要:
智能指针(smart pointer)就是把动态分配的内存包装在一个基于栈的变量中。引用计数是用来跟踪多少个智能指针指向某个实际指针。[代码] 该智能指针实现存在一些问题: 因为是通过模板类实现的,所以对于SuperSmartPointer<int>和SuperSmartPoint<char>在编译时会生成2个类,一般是没有问题的,但是下面的情况:char * ch = n... 阅读全文
摘要:
程序中使用对象池可以避免创建和删除大量的对象。如果知道程序使用大量同类对象,而且这些对象执行时间又很短,则可以使用对象池池技术。下面是利用队列和向量实现的对象池代码:[代码]调用的代码:[代码] 阅读全文
摘要:
创建线程池,比如包括n个线程,然后自己可以增加任务队列,创建的线程从队列中取任务执行,执行完后,取下一个任务。如果任务是死循环,这这个线程就会一直执行这个任务。threadpool.h[代码]main.cpp[代码]threadpool.cpp[代码] 阅读全文
摘要:
win32中,通过信号量来限定执行特殊代码的线程的数量。CreateSemaphore时候,可以指定信号量初始值以及最大值。线程执行时候,通过WaitForSingleObject来判定现在的信号量计数是否允许执行线程。如果可以执行,则信号量减1,如果退出执行,信号量加1.下面的代码,12个线程等待计数为10的信号量,会有2个线程timeout返回。[代码] 阅读全文
摘要:
在windows中,能够通过Event编程,来同步线程间的操作。比如下面的代码:主线程写共享缓冲,然后通知其他线程来读取。[代码] 阅读全文
摘要:
封装了linux和win32的基本线程操作:包括创建线程,等待线程完成,kill线程等等。ThreadException.h[代码]ThreadLib.h[代码]ThreadLibFunctions.cpp[代码]ThreadLibFunctions.h[代码]ThreadLibMutex.h[代码]调用线程库的main.cpp文件[代码] 阅读全文
摘要:
3、Ogre中的单例类实现在Ogresinglton.h[代码] 需要使用 Singleton 的类,只要继承它即可: class MyClass : public Singleton<MyClass>{// ..} 但在OGRE 的源码中我们可以发现,从Singleton 继承的类都Override 了Singleton 的成员getSingleton 和 getSingleto... 阅读全文
摘要:
游戏引擎中经常用到单例(singleton)类,即应用程序只存在该类的一个实例,下面是它的实现方式:1、c++ professional中的单例日志类:定义一个protected的static Logger sInstance;然后通过public静态函数static Logger& instance();返回sInstance,从而实现对该类中函数的访问。同时,该类的构造函数是私有的,我... 阅读全文
|