#define JMUTEX_H
#if (defined(WIN32) || defined(_WIN32_WCE))
+ #ifndef _WIN32_WINNT
+ #define _WIN32_WINNT 0x0501
+ #endif
#ifndef _WIN32_WCE
#include <process.h>
#endif // _WIN32_WCE
public:
JMutex();
~JMutex();
- int Init();
int Lock();
int Unlock();
- bool IsInitialized() { return initialized; }
+
private:
#if (defined(WIN32) || defined(_WIN32_WCE))
#ifdef JMUTEX_CRITICALSECTION
#endif // JMUTEX_CRITICALSECTION
#else // pthread mutex
pthread_mutex_t mutex;
-#endif // WIN32
- bool initialized;
-};
-
-#ifdef _WIN32
-
-class Event {
- HANDLE hEvent;
-
-public:
- Event() {
- hEvent = CreateEvent(NULL, 0, 0, NULL);
- }
-
- ~Event() {
- CloseHandle(hEvent);
- }
-
- void wait() {
- WaitForSingleObject(hEvent, INFINITE);
- }
-
- void signal() {
- SetEvent(hEvent);
- }
-}
-
-#else
-
-#include <semaphore.h>
-class Event {
- sem_t sem;
-
-public:
- Event() {
- sem_init(&sem, 0, 0);
- }
-
- ~Event() {
- sem_destroy(&sem);
- }
-
- void wait() {
- sem_wait(&sem);
- }
-
- void signal() {
- sem_post(&sem);
+ bool IsLocked() {
+ if (pthread_mutex_trylock(&mutex)) {
+ pthread_mutex_unlock(&mutex);
+ return true;
+ }
+ return false;
}
+#endif // WIN32
};
-#endif
-
#endif // JMUTEX_H