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.
50 lines
983 B
50 lines
983 B
15 years ago
|
//========================================================================
|
||
|
//
|
||
|
// 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
|