00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackWinProcessSync__
00021 #define __JackWinProcessSync__
00022
00023 #include "JackWinMutex.h"
00024
00025 namespace Jack
00026 {
00027
00032 class JackWinProcessSync : public JackWinMutex
00033 {
00034
00035 private:
00036
00037 HANDLE fEvent;
00038
00039 public:
00040
00041 JackWinProcessSync(const char* name = NULL):JackWinMutex(name)
00042 {
00043 if (name) {
00044 char buffer[MAX_PATH];
00045 snprintf(buffer, sizeof(buffer), "%s_%s", "JackWinProcessSync", name);
00046 fEvent = CreateEvent(NULL, TRUE, FALSE, buffer);
00047
00048 } else {
00049 fEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
00050
00051 }
00052
00053 ThrowIf((fEvent == 0), JackException("JackWinProcessSync: could not init the event"));
00054 }
00055 virtual ~JackWinProcessSync()
00056 {
00057 CloseHandle(fEvent);
00058 }
00059
00060 bool TimedWait(long usec);
00061 bool LockedTimedWait(long usec);
00062
00063 void Wait();
00064 void LockedWait();
00065
00066 void Signal();
00067 void LockedSignal();
00068
00069 void SignalAll();
00070 void LockedSignalAll();
00071 };
00072
00073 }
00074
00075 #endif
00076