QGIS API Documentation
2.6.0-Brighton
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
src
core
pal
simplemutex.h
Go to the documentation of this file.
1
/*
2
* libpal - Automated Placement of Labels Library
3
*
4
* Copyright (C) 2008 Maxence Laurent, MIS-TIC, HEIG-VD
5
* University of Applied Sciences, Western Switzerland
6
* http://www.hes-so.ch
7
*
8
* Contact:
9
* maxence.laurent <at> heig-vd <dot> ch
10
* or
11
* eric.taillard <at> heig-vd <dot> ch
12
*
13
* This file is part of libpal.
14
*
15
* libpal is free software: you can redistribute it and/or modify
16
* it under the terms of the GNU General Public License as published by
17
* the Free Software Foundation, either version 3 of the License, or
18
* (at your option) any later version.
19
*
20
* libpal is distributed in the hope that it will be useful,
21
* but WITHOUT ANY WARRANTY; without even the implied warranty of
22
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
* GNU General Public License for more details.
24
*
25
* You should have received a copy of the GNU General Public License
26
* along with libpal. If not, see <http://www.gnu.org/licenses/>.
27
*
28
*/
29
30
#ifndef _SIMPLE_MUTEX_H_
31
#define _SIMPLE_MUTEX_H_
32
33
34
#ifdef HAVE_CONFIG_H
35
#include <
config.h
>
36
#endif
37
38
// Platform dependent mutex
39
#ifdef _HAVE_PTHREAD_
40
#include <pthread.h>
41
#define THREAD_TYPE pthread_mutex_t
42
43
44
#define CREATE_MUTEX(mutex) (pthread_mutex_init(&mutex, NULL))
45
#define LOCK(mutex) (pthread_mutex_lock(&mutex))
46
#define UNLOCK(mutex) (pthread_mutex_unlock(&mutex))
47
#define DESTROY_MUTEX(mutex) (pthread_mutex_destroy(&mutex))
48
#endif
49
50
#ifdef _HAVE_WINDOWS_H_
51
#include <windows.h>
52
#define THREAD_TYPE HANDLE
53
#define CREATE_MUTEX(mutex) (mutex = CreateMutex(0, false, 0))
54
#define LOCK(mutex) (WaitForSingleObject(mutex, INFINITE))
55
#define UNLOCK(mutex) (ReleaseMutex(mutex))
56
#define DESTROY_MUTEX(mutex) (CloseHandle(mutex))
57
#endif
58
59
namespace
pal
60
{
61
62
typedef
THREAD_TYPE
MUTEX_T
;
63
64
class
SimpleMutex
65
{
66
private
:
67
MUTEX_T
mutex;
68
69
public
:
70
SimpleMutex
()
71
{
72
CREATE_MUTEX( mutex );
73
}
74
75
~SimpleMutex
()
76
{
77
DESTROY_MUTEX( mutex );
78
}
79
80
void
lock
()
81
{
82
LOCK( mutex );
83
}
84
85
void
unlock
()
86
{
87
UNLOCK( mutex );
88
}
89
};
90
91
}
// namespace
92
93
#endif
Generated on Fri Oct 31 2014 15:49:46 for QGIS API Documentation by
1.8.1.2