IVT
Event.h
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: Event.h
37 // Author: Kai Welke
38 // Date: 13.01.2006
39 // ****************************************************************************
40 
41 
42 #ifndef _EVENT_H_
43 #define _EVENT_H_
44 
45 
46 // ****************************************************************************
47 // Necessary includes
48 // ****************************************************************************
49 
50 #include "Threading.h"
51 
52 #ifdef WIN32
53 #include <windows.h>
54 #else
55 #include <pthread.h>
56 #endif
57 
58 
59 
60 // ****************************************************************************
61 // CEvent
62 // ****************************************************************************
63 
68 class CEvent
69 {
70 public:
71  // constructor
72  CEvent();
73 
74  // destructor
75  ~CEvent();
76 
77  // resets all pending signals
78  void Reset();
79 
80  // waits for an event, under linux the minimum wait time is one second
82 
83  // signals an event
84  void Signal();
85 
86 
87 private:
88 #ifdef WIN32
89  CRITICAL_SECTION m_CSWindowsMutex;
90  HANDLE m_SignalEvent;
91 #else
92  pthread_mutex_t m_PosixMutex;
93  pthread_mutexattr_t m_MutexAttr;
94  pthread_cond_t m_PosixConditional;
95  pthread_condattr_t m_ConditionalAttr;
96 
97  bool m_bSignaled;
98 #endif
99 };
100 
101 
102 
103 #endif /* _EVENT_H */
void Reset()
Definition: Event.cpp:92
const int WAIT_INFINITE
Definition: Threading.h:59
CEvent()
Definition: Event.cpp:60
Implementation of events.
Definition: Event.h:68
~CEvent()
Definition: Event.cpp:75
Threading::EEventStatus Wait(int nMS=Threading::WAIT_INFINITE)
Definition: Event.cpp:105
void Signal()
Definition: Event.cpp:206