SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送
メインページ   名前空間一覧   クラス階層   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

dkutilUserDefinition.h

解説を見る。
00001 
00002 //#include "AllLoad.h"
00003 #include "dkutil_DataStruct.h"
00004 
00005 
00006 #ifndef __dKingyoGlobalProcess__Include_Once
00007 #define __dKingyoGlobalProcess__Include_Once
00008 
00009 
00011 
00012 
00013 class dKingyoGlobalProcess : public IdKingyoGlobalProcess{
00014 protected:
00015     bool m_isLock;//trueでロック中 falseでロックしていない
00016 public:
00017     inline bool isLock(){return m_isLock;}
00018     dKingyoGlobalProcess(){}
00019     virtual ~dKingyoGlobalProcess(){}
00020     virtual int LockThread(){//スレッドをロックする
00021         CallbackLockThread();
00022         return 0;
00023     }
00024     virtual int UnlockThread(){//スレッドをアンロックする
00025         CallbackUnlockThread();
00026         return 0;
00027     }
00028     void CallbackLockThread(){ inlLockThread();}
00029     void CallbackUnlockThread(){ inlUnlockThread();}
00030     inline int DefaultGameManagerGlobalMemorySetting(GAMEMANAGER_DEFAULTGLOBALDATA *copy){
00031         GAMEMANAGER_DEFAULTGLOBALDATA dd;
00032         dd.TopTaskInit = dkutil::Return;
00033         dd.TopTaskKill = dkutil::Return;
00034         dd.TailTaskInit = dkutil::Return;
00035         dd.TailTaskKill = dkutil::Return;
00036         //後はUserに任せる
00037         int result=inlGameManagerGlobalMemorySetting(&dd);
00038         (*copy) = dd;//コピーする
00039         return result;
00040     }
00041     //**********************************************************
00042     //ここ以降はユーザーが定義する関数軍です。
00043     //**********************************************************
00044     inline void inlLockThread(){
00045         {   
00046             if(isLock()) return;
00047             m_isLock=true;
00048         }
00049     }
00050     inline void inlUnlockThread(){
00051         {
00052             if(!isLock()) return;
00053             m_isLock=false;
00054         }
00055     }
00056     inline int inlGameManagerGlobalMemorySetting(GAMEMANAGER_DEFAULTGLOBALDATA *copy){
00057         return 0;
00058     }
00059     
00060 };
00061 static dKingyoGlobalProcess si;
00062 
00063 inline dKingyoGlobalProcess &GetSingletonGlobalProcess(){
00064     return si;
00065 }
00066 
00067 //static dkutil::DTL::dk_singleton<
00068 
00069 
00070 
00071 //**********************************************************
00072 //マルチスレッドの設定
00073 //**********************************************************
00074 
00075 //マルチスレッドなら
00076 #ifdef USE_DKINGYO_MULTITHREAD_BUILD //マルチスレッドでビルドする
00077 
00078 #   define DKUTIL_LOCKTHREAD() GetSingletonGlobalProcess().inlLockThread()
00079 #   define DKUTIL_UNLOCKTHREAD() GetSingletonGlobalProcess().inlUnlockThread()
00080 #   define DKUTIL_MULTITHREAD_SYNDROME_LOCK()
00081 #   define DKUTIL_MULTITHREAD_SYNDROME_UNLOCK()
00082 
00083 #   ifdef USE_DKINGYO_MULTITHREAD_CHECKER //マルチスレッドチェッカーを使う
00084 
00085 //かなり安全なマルチスレッド処理を行うためにロックしなくてもいいかな?
00086 //って場所にもロックする。例えば、とあるオブジェクト(変数)をグローバルにして
00087 //スレッド間でそれにアクセスできる場合などは以下のマクロを使えるようにしなければならない。
00088 //なのでdkutilConfig.hでUSE_DKINGYO_MULTITHREAD_CHECKERを有効にする必要がある。
00089 
00090 #       undef   DKUTIL_MULTITHREAD_SYNDROME_LOCK
00091 #       undef   DKUTIL_MULTITHREAD_SYNDROME_UNLOCK
00092 #       define DKUTIL_MULTITHREAD_SYNDROME_LOCK()  GetSingletonGlobalProcess().inlLockThread()
00093 #       define DKUTIL_MULTITHREAD_SYNDROME_UNLOCK() GetSingletonGlobalProcess().inlUnlockThread()
00094 #   endif
00095 
00096 #else // シングルスレッドなら
00097 
00098 #   define DKUTIL_LOCKTHREAD()
00099 #   define DKUTIL_UNLOCKTHREAD()
00100 #   define DKUTIL_MULTITHREAD_SYNDROME_LOCK()
00101 #   define DKUTIL_MULTITHREAD_SYNDROME_UNLOCK()
00102 
00103 #endif
00104 
00105 
00106 
00107 #endif // end of __dKingyoGlobalProcess__Include_Once

dKingyoUtilClass (dkutil)に対してMon Jun 9 01:32:41 2003に生成されました。 doxygen1.3