6 #define WIN32_LEAN_AND_MEAN
15 public class Mutex : struct
18 #if defined(__WIN32__)
19 CRITICAL_SECTION mutex;
21 pthread_mutex_t mutex;
26 #if defined(__WIN32__)
27 InitializeCriticalSection(&mutex);
29 pthread_mutexattr_t attr;
30 pthread_mutexattr_init(&attr);
33 pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
35 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
38 pthread_mutex_init(&mutex, &attr);
39 pthread_mutexattr_destroy(&attr);
46 #if defined(__WIN32__)
47 DeleteCriticalSection(&mutex);
49 pthread_mutex_destroy(&mutex);
59 if(this == globalSystem.fileMonitorMutex)
60 printf("[%d] Waiting on Mutex %x\n", GetCurrentThreadID(), this);
62 #if defined(__WIN32__)
63 EnterCriticalSection(&mutex);
65 pthread_mutex_lock(&mutex);
75 if(this == globalSystem.fileMonitorMutex)
76 printf("[%d] Releasing Mutex %x\n", GetCurrentThreadID(), this);
79 #if defined(__WIN32__)
80 LeaveCriticalSection(&mutex);
82 pthread_mutex_unlock(&mutex);