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