windows/SysSemaphore.cpp
Go to the documentation of this file.
1
/*----------------------------------------------------------------------------*/
2
/* */
3
/* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4
/* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5
/* */
6
/* This program and the accompanying materials are made available under */
7
/* the terms of the Common Public License v1.0 which accompanies this */
8
/* distribution. A copy is also available at the following address: */
9
/* http://www.ibm.com/developerworks/oss/CPLv1.0.htm */
10
/* */
11
/* Redistribution and use in source and binary forms, with or */
12
/* without modification, are permitted provided that the following */
13
/* conditions are met: */
14
/* */
15
/* Redistributions of source code must retain the above copyright */
16
/* notice, this list of conditions and the following disclaimer. */
17
/* Redistributions in binary form must reproduce the above copyright */
18
/* notice, this list of conditions and the following disclaimer in */
19
/* the documentation and/or other materials provided with the distribution. */
20
/* */
21
/* Neither the name of Rexx Language Association nor the names */
22
/* of its contributors may be used to endorse or promote products */
23
/* derived from this software without specific prior written permission. */
24
/* */
25
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26
/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27
/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28
/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29
/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31
/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32
/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33
/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34
/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35
/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36
/* */
37
/*----------------------------------------------------------------------------*/
38
/*****************************************************************************/
39
/* REXX Windows Support */
40
/* */
41
/* Semaphore support for Windows */
42
/* */
43
/*****************************************************************************/
44
45
#include "
SysSemaphore.hpp
"
46
47
bool
SysSemaphore::usingTls
=
false
;
48
DWORD
SysSemaphore::tlsNoMessageLoopIndex
= TLS_OUT_OF_INDEXES;
49
50
/**
51
* Create a semaphore with potential creation-time
52
* initialization.
53
*
54
* @param create Indicates whether the semaphore should be created now.
55
*/
56
SysSemaphore::SysSemaphore
(
const
char
*variable,
bool
createSem)
57
{
58
semVariable
= variable;
59
sem
= 0;
60
if
(createSem)
61
{
62
create
();
63
}
64
}
65
66
67
/* ********************************************************************** */
68
/* *** SysSemaphore *** */
69
/* ********************************************************************** */
70
void
SysSemaphore::create
()
71
{
72
if
(
sem
== 0 )
73
{
74
sem
= CreateEvent(NULL,
true
,
true
, NULL);
75
}
76
}
77
78
void
SysSemaphore::close
()
79
{
80
if
(
sem
!= 0)
81
{
82
CloseHandle(
sem
);
83
sem
= 0;
84
}
85
}
86
87
88
/* ********************************************************************** */
89
/* *** SysMutex *** */
90
/* ********************************************************************** */
91
92
/**
93
* Create a semaphore with potential creation-time
94
* initialization.
95
*
96
* @param create Indicates whether the semaphore should be created now.
97
*/
98
SysMutex::SysMutex
(
const
char
*variable,
bool
createSem)
99
{
100
mutexVariable
= variable;
101
mutexMutex
= 0;
102
if
(createSem)
103
{
104
create
();
105
}
106
}
107
108
109
void
SysMutex::create
()
110
{
111
if
(
mutexMutex
== 0)
112
{
113
mutexMutex
= CreateMutex(NULL,
false
, NULL);
114
}
115
}
116
117
void
SysMutex::close
()
118
{
119
if
(
mutexMutex
!= 0)
120
{
121
CloseHandle(
mutexMutex
);
122
mutexMutex
= 0;
123
}
124
}
SysMutex::close
void close()
Definition:
unix/SysSemaphore.cpp:324
SysMutex::mutexMutex
pthread_mutex_t mutexMutex
Definition:
unix/SysSemaphore.hpp:150
SysMutex::SysMutex
SysMutex(const char *variable)
Definition:
unix/SysSemaphore.hpp:80
SysMutex::mutexVariable
const char * mutexVariable
Definition:
unix/SysSemaphore.hpp:149
SysMutex::create
void create()
Definition:
unix/SysSemaphore.cpp:275
SysSemaphore::SysSemaphore
SysSemaphore(const char *variable)
Definition:
unix/SysSemaphore.hpp:57
SysSemaphore::create
void create()
Definition:
unix/SysSemaphore.cpp:91
SysSemaphore::semVariable
const char * semVariable
Definition:
unix/SysSemaphore.hpp:71
SysSemaphore::close
void close()
Definition:
unix/SysSemaphore.cpp:155
SysSemaphore::usingTls
static bool usingTls
Definition:
windows/SysSemaphore.hpp:134
SysSemaphore::sem
HANDLE sem
Definition:
windows/SysSemaphore.hpp:131
SysSemaphore::tlsNoMessageLoopIndex
static DWORD tlsNoMessageLoopIndex
Definition:
windows/SysSemaphore.hpp:135
SysSemaphore.hpp
oorexx
executor
sandbox
jlf
trunk
common
platform
windows
SysSemaphore.cpp
Generated by
1.9.2