メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

# dkcThreadLock.h

説明を見る。

    00001
    00013 #ifndef DKUTIL_C_THREAD_LOCK_H
    00014 #define DKUTIL_C_THREAD_LOCK_H
    00015
    00016 #include "dkcOSIndependent.h"
    00017
    00018 #ifdef WIN32
    00019 typedef DWORD dkctThreadID;
    00020 #define dkcdINVALID_THREAD_ID ((dkctThreadID)(-1))
    00021
    00022 typedef struct dkc_ThreadLock{
    00023     CRITICAL_SECTION m_csCriticalSection;
    00025     dkctThreadID    mLockedThread ;
    00027     int                 mLockCount ;
    00028 }DKC_THREAD_LOCK;
    00029
    00030 #else
    00031
    00032 typedef void *dkctThreadID;
    00033 #define dkcdINVALID_THREAD_ID ((dkctThreadID)(NULL))
    00034
    00035 typedef struct dkc_ThreadLock{
    00036     pthread_mutex_t mMutex;
    00038     dkctThreadID                mLockedThread ;
    00040     int                 mLockCount ;
    00041 }DKC_THREAD_LOCK;
    00042
    00043
    00044 #endif
    00045
    00046 DKC_INLINE dkctThreadID dkcGetThreadID(){
    00047 #ifdef WIN32
    00048     return GetCurrentThreadId();
    00049 #else
    00050     return pthread_self();
    00051 #endif
    00052 }
    00053
    00054 DKC_EXTERN DKC_THREAD_LOCK * WINAPI dkcAllocThreadLock();
    00055
    00056 DKC_EXTERN int WINAPI dkcFreeThreadLock(DKC_THREAD_LOCK **);
    00057
    00058 DKC_EXTERN void WINAPI dkcThreadLock_Lock(DKC_THREAD_LOCK *);
    00059
    00060
    00061 DKC_EXTERN void WINAPI dkcThreadLock_Unlock(DKC_THREAD_LOCK *);
    00062
    00063
    00064 //DKC_EXTERN BOOL WINAPI dkcThreadLockIsInited(DKC_THREAD_LOCK *);
    00065
    00066 DKC_EXTERN BOOL WINAPI dkcThreadLockIsLockedByThisThread(DKC_THREAD_LOCK *);
    00067 #define dkcThreadLockIsLockedByCurrentThread(p) dkcThreadLockIsLockedByThisThread(p)
    00068 /*
    00069 DKC_EXTERN void WINAPI dkcThreadLockInit();
    00070
    00071 DKC_EXTERN void WINAPI dkcThreadLock_Lock();
    00072
    00073 DKC_EXTERN void WINAPI dkcThreadLock_Unlock();
    00074
    00075 DKC_EXTERN void WINAPI dkcThreadLockEnd();
    00076
    00077 DKC_EXTERN BOOL WINAPI dkcThreadLockIsInited();
    00078
    00079 DKC_EXTERN BOOL WINAPI dkcThreadLockIsLockedByThisThread();
    00080 */
    00081 #if !defined( DKUTIL_C_THREAD_LOCK_C ) &&  defined(USE_DKC_INDEPENDENT_INCLUDE)
    00082 #   include "dkcThreadLock.c"
    00083 #endif
    00084
    00085 #endif //end of include once