64 строки
1.5 KiB
C
64 строки
1.5 KiB
C
//========================================================================
|
|
//
|
|
// GooMutex.h
|
|
//
|
|
// Portable mutex macros.
|
|
//
|
|
// Copyright 2002-2003 Glyph & Cog, LLC
|
|
//
|
|
//========================================================================
|
|
|
|
//========================================================================
|
|
//
|
|
// Modified under the Poppler project - http://poppler.freedesktop.org
|
|
//
|
|
// All changes made under the Poppler project to this file are licensed
|
|
// under GPL version 2 or later
|
|
//
|
|
// Copyright (C) 2009 Kovid Goyal <kovid@kovidgoyal.net>
|
|
//
|
|
// To see a description of the changes please see the Changelog file that
|
|
// came with your tarball or type make ChangeLog if you are building from git
|
|
//
|
|
//========================================================================
|
|
|
|
#ifndef GMUTEX_H
|
|
#define GMUTEX_H
|
|
|
|
// Usage:
|
|
//
|
|
// GooMutex m;
|
|
// gInitMutex(&m);
|
|
// ...
|
|
// gLockMutex(&m);
|
|
// ... critical section ...
|
|
// gUnlockMutex(&m);
|
|
// ...
|
|
// gDestroyMutex(&m);
|
|
|
|
#ifdef _WIN32
|
|
|
|
#include <windows.h>
|
|
|
|
typedef CRITICAL_SECTION GooMutex;
|
|
|
|
#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 GooMutex;
|
|
|
|
#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
|