Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
IVT
src
Threading
WindowsThread.cpp
Go to the documentation of this file.
1
// ****************************************************************************
2
// This file is part of the Integrating Vision Toolkit (IVT).
3
//
4
// The IVT is maintained by the Karlsruhe Institute of Technology (KIT)
5
// (www.kit.edu) in cooperation with the company Keyetech (www.keyetech.de).
6
//
7
// Copyright (C) 2014 Karlsruhe Institute of Technology (KIT).
8
// All rights reserved.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are met:
12
//
13
// 1. Redistributions of source code must retain the above copyright
14
// notice, this list of conditions and the following disclaimer.
15
//
16
// 2. Redistributions in binary form must reproduce the above copyright
17
// notice, this list of conditions and the following disclaimer in the
18
// documentation and/or other materials provided with the distribution.
19
//
20
// 3. Neither the name of the KIT nor the names of its contributors may be
21
// used to endorse or promote products derived from this software
22
// without specific prior written permission.
23
//
24
// THIS SOFTWARE IS PROVIDED BY THE KIT AND CONTRIBUTORS “AS IS” AND ANY
25
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
// DISCLAIMED. IN NO EVENT SHALL THE KIT OR CONTRIBUTORS BE LIABLE FOR ANY
28
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
// ****************************************************************************
35
// ****************************************************************************
36
// Filename: WindowsThread.cpp
37
// Author: Pedram Azad
38
// Date: 2004
39
// ****************************************************************************
40
41
42
// ****************************************************************************
43
// Includes
44
// ****************************************************************************
45
46
#include <new>
// for explicitly using correct new/delete operators on VC DSPs
47
48
#include "
WindowsThread.h
"
49
50
#include <windows.h>
51
52
53
54
// ****************************************************************************
55
// ThreadRoutine
56
// ****************************************************************************
57
58
unsigned
long
__stdcall
ThreadRoutine
(
void
*pParameter)
59
{
60
const
int
nRet = ((
CThreadBase
*) pParameter)->_ThreadMethod();
61
((
CThreadBase
*) pParameter)->m_bCompletelyDone =
true
;
62
return
(
unsigned
long
) nRet;
63
}
64
65
66
// ****************************************************************************
67
// Constructor / Destructor
68
// ****************************************************************************
69
70
CWindowsThread::CWindowsThread
()
71
{
72
m_hThreadHandle
= NULL;
73
m_hFinishedEvent
= NULL;
74
}
75
76
CWindowsThread::~CWindowsThread
()
77
{
78
Stop
();
79
}
80
81
82
// ****************************************************************************
83
// Methods
84
// ****************************************************************************
85
86
void
CWindowsThread::_Start
()
87
{
88
if
(
m_hThreadHandle
)
89
return
;
90
91
m_hThreadHandle
= CreateThread(NULL, 0,
ThreadRoutine
,
this
, 0, NULL);
92
m_hFinishedEvent
= CreateEvent(0, FALSE, FALSE, 0);
93
}
94
95
void
CWindowsThread::_Stop
()
96
{
97
if
(!
m_hThreadHandle
)
98
return
;
99
100
// wait and kill thread after timeout
101
WaitForSingleObject(
m_hFinishedEvent
,
m_nKillThreadTimeout
);
102
103
CloseHandle(
m_hThreadHandle
);
104
CloseHandle(
m_hFinishedEvent
);
105
106
m_hThreadHandle
= NULL;
107
m_hFinishedEvent
= NULL;
108
}
109
110
void
CWindowsThread::ThreadMethodFinished
()
111
{
112
if
(
m_hFinishedEvent
)
113
SetEvent(
m_hFinishedEvent
);
114
}
WindowsThread.h
ThreadRoutine
unsigned long __stdcall ThreadRoutine(void *pParameter)
Definition:
WindowsThread.cpp:58
CWindowsThread::_Stop
void _Stop()
Definition:
WindowsThread.cpp:95
CWindowsThread::ThreadMethodFinished
void ThreadMethodFinished()
Definition:
WindowsThread.cpp:110
CWindowsThread::_Start
void _Start()
Definition:
WindowsThread.cpp:86
CWindowsThread::~CWindowsThread
~CWindowsThread()
Definition:
WindowsThread.cpp:76
CWindowsThread::m_hThreadHandle
void * m_hThreadHandle
Definition:
WindowsThread.h:79
CWindowsThread::m_hFinishedEvent
void * m_hFinishedEvent
Definition:
WindowsThread.h:80
CThreadBase::m_nKillThreadTimeout
int m_nKillThreadTimeout
Definition:
ThreadBase.h:148
CWindowsThread::CWindowsThread
CWindowsThread()
Definition:
WindowsThread.cpp:70
CThreadBase::Stop
void Stop()
Definition:
ThreadBase.h:105
CThreadBase
Definition:
ThreadBase.h:66
asr_ivt
Author(s): Allgeyer Tobias, Hutmacher Robin, Kleinert Daniel, Meißner Pascal, Scholz Jonas, Stöckle Patrick
autogenerated on Mon Dec 2 2019 03:47:28