windows/SysThread.hpp
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 Kernel SysThread.hpp */
40
/* */
41
/* Abstract system thread class. This is just a template class, which no */
42
/* virtual functions defined. This gives the implementing platform a lot of */
43
/* implementation flexibility to use inline methods where appropriate, */
44
/* particularly for functions that are NOPs. The platform is also free to */
45
/* define any internal data necessary to implement the thread functions. */
46
/* */
47
/******************************************************************************/
48
49
#ifndef Included_SysThread
50
#define Included_SysThread
51
52
#include "
rexx.h
"
53
54
class
SysThread
55
{
56
57
public
:
58
59
typedef
enum
60
{
61
LOW_PRIORITY
,
62
MEDIUM_PRIORITY
,
63
GUARDED_PRIORITY
,
64
HIGH_PRIORITY
65
}
ThreadPriority
;
66
67
enum
68
{
69
THREAD_STACK_SIZE
= 1024*512
70
};
71
72
SysThread
() :
attached
(false),
_threadHandle
(INVALID_HANDLE_VALUE),
_threadID
(-1) {;}
73
virtual
~SysThread
() {;}
74
75
SysThread
(
thread_id_t
threadID
)
76
{
77
_threadID
= (DWORD)
threadID
;
78
}
79
80
virtual
void
attachThread
();
81
void
setPriority
(
ThreadPriority
priority);
82
virtual
void
dispatch
();
83
void
terminate
();
84
void
startup
();
85
void
shutdown
();
86
void
yield
();
87
inline
uintptr_t
threadID
() {
88
return
(
uintptr_t
)
_threadID
;
89
}
90
bool
equals
(
SysThread
&other);
91
inline
size_t
hash
() {
return
(((
size_t
)
_threadHandle
) >> 8) * 37; }
92
93
protected
:
94
void
createThread
();
95
96
bool
attached
;
// indicates whether this was a created thread or attached
97
HANDLE
_threadHandle
;
// thread handle
98
DWORD
_threadID
;
// thread identifier
99
};
100
101
#endif
SysThread
Definition:
unix/SysThread.hpp:56
SysThread::_threadID
pthread_t _threadID
Definition:
unix/SysThread.hpp:99
SysThread::_threadID
DWORD _threadID
Definition:
windows/SysThread.hpp:98
SysThread::startup
void startup()
SysThread::~SysThread
virtual ~SysThread()
Definition:
windows/SysThread.hpp:73
SysThread::hash
size_t hash()
Definition:
windows/SysThread.hpp:91
SysThread::shutdown
void shutdown()
SysThread::createThread
void createThread()
SysThread::terminate
void terminate()
SysThread::_threadHandle
HANDLE _threadHandle
Definition:
windows/SysThread.hpp:97
SysThread::SysThread
SysThread(thread_id_t threadID)
Definition:
windows/SysThread.hpp:75
SysThread::attached
bool attached
Definition:
unix/SysThread.hpp:98
SysThread::ThreadPriority
ThreadPriority
Definition:
unix/SysThread.hpp:61
SysThread::MEDIUM_PRIORITY
@ MEDIUM_PRIORITY
Definition:
unix/SysThread.hpp:63
SysThread::HIGH_PRIORITY
@ HIGH_PRIORITY
Definition:
unix/SysThread.hpp:65
SysThread::GUARDED_PRIORITY
@ GUARDED_PRIORITY
Definition:
unix/SysThread.hpp:64
SysThread::LOW_PRIORITY
@ LOW_PRIORITY
Definition:
unix/SysThread.hpp:62
SysThread::yield
void yield()
SysThread::THREAD_STACK_SIZE
@ THREAD_STACK_SIZE
Definition:
unix/SysThread.hpp:70
SysThread::setPriority
void setPriority(int priority)
Definition:
unix/SysThread.cpp:62
SysThread::SysThread
SysThread()
Definition:
windows/SysThread.hpp:72
SysThread::dispatch
virtual void dispatch()
SysThread::equals
bool equals(SysThread &other)
SysThread::threadID
uintptr_t threadID()
Definition:
unix/SysThread.hpp:88
SysThread::attachThread
virtual void attachThread()
rexx.h
thread_id_t
pthread_t thread_id_t
Definition:
unix/rexxapitypes.h:66
uintptr_t
UINT_PTR uintptr_t
Definition:
windows/rexxapitypes.h:50
oorexx
executor
sandbox
jlf
trunk
common
platform
windows
SysThread.hpp
Generated by
1.9.2