You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
983 B
49 lines
983 B
//======================================================================== |
|
// |
|
// GMutex.h |
|
// |
|
// Portable mutex macros. |
|
// |
|
// Copyright 2002-2003 Glyph & Cog, LLC |
|
// |
|
//======================================================================== |
|
|
|
#ifndef GMUTEX_H |
|
#define GMUTEX_H |
|
|
|
// Usage: |
|
// |
|
// GMutex m; |
|
// gInitMutex(&m); |
|
// ... |
|
// gLockMutex(&m); |
|
// ... critical section ... |
|
// gUnlockMutex(&m); |
|
// ... |
|
// gDestroyMutex(&m); |
|
|
|
#ifdef WIN32 |
|
|
|
#include <windows.h> |
|
|
|
typedef CRITICAL_SECTION GMutex; |
|
|
|
#define gInitMutex(m) InitializeCriticalSection(m) |
|
#define gDestroyMutex(m) DeleteCriticalSection(m) |
|
#define gLockMutex(m) EnterCriticalSection(m) |
|
#define gUnlockMutex(m) LeaveCriticalSection(m) |
|
|
|
#else // assume pthreads |
|
|
|
#include <pthread.h> |
|
|
|
typedef pthread_mutex_t GMutex; |
|
|
|
#define gInitMutex(m) pthread_mutex_init(m, NULL) |
|
#define gDestroyMutex(m) pthread_mutex_destroy(m) |
|
#define gLockMutex(m) pthread_mutex_lock(m) |
|
#define gUnlockMutex(m) pthread_mutex_unlock(m) |
|
|
|
#endif |
|
|
|
#endif
|
|
|