00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackWinMutex__
00022 #define __JackWinMutex__
00023
00024 #include <windows.h>
00025
00026 namespace Jack
00027 {
00031 class JackWinMutex
00032 {
00033
00034 protected:
00035
00036 HANDLE fMutex;
00037
00038 public:
00039
00040 JackWinMutex()
00041 {
00042
00043 fMutex = (HANDLE)CreateMutex(0, FALSE, 0);
00044 }
00045
00046 virtual ~JackWinMutex()
00047 {
00048 CloseHandle(fMutex);
00049 }
00050
00051 bool Lock()
00052 {
00053 return (WAIT_OBJECT_0 == WaitForSingleObject(fMutex, INFINITE));
00054 }
00055
00056 bool Trylock()
00057 {
00058 return (WAIT_OBJECT_0 == WaitForSingleObject(fMutex, 0));
00059 }
00060
00061 bool Unlock()
00062 {
00063 return(ReleaseMutex(fMutex) != 0);
00064 }
00065
00066 };
00067
00068 }
00069
00070 #endif