ITAMutex.h 1.45 KB
Newer Older
Jonas Stienen's avatar
Jonas Stienen committed
1
/*
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 * ----------------------------------------------------------------
 *
 *		ITA core libs
 *		(c) Copyright Institute of Technical Acoustics (ITA)
 *		RWTH Aachen University, Germany, 2015-2017
 *
 * ----------------------------------------------------------------
 *				    ____  __________  _______
 *				   //  / //__   ___/ //  _   |
 *				  //  /    //  /    //  /_|  |
 *				 //  /    //  /    //  ___   |
 *				//__/    //__/    //__/   |__|
 *
 * ----------------------------------------------------------------
 *
 */
Jonas Stienen's avatar
Jonas Stienen committed
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

#ifndef INCLUDE_WATCHER_ITA_MUTEX
#define INCLUDE_WATCHER_ITA_MUTEX

#include <ITAUncopyable.h>

#include <windows.h>

/**
 * Die Klasse ITAMutex ist eine Wrapper-Klasse zu Win32 Mutexen.
 * Die Klasse bernimmt im Konstruktor/Destruktor
 * die Erzeugung/Freigabe des Mutex-Kernelobjektes.
 * Sinn der  Klasse ist es, die Verwendung von Mutexen, durch
 * Erzeugung/Freigabe im Konstruktor/Destruktor, zu vereinfachen.
 * 
 * \note Der Unterschied zur Klasse ITACriticalSection entspricht dem Unterschied
 *       Mutex vs. CRITICAL_SECTION. Kritische Bereiche knnen nur innerhalb
 *       eines Threads benutzt werden, Mutexe hingegen prozebergreifend.
 *       Dafr sind CRITICAL_SECTIONs laut Microsoft etwas effizienter.
 */

class ITA_BASE_API ITAMutex : public ITAUncopyable {
public:
	ITAMutex();
	~ITAMutex();

	void request() { WaitForSingleObject(hMutex, INFINITE); }
	void release() { ReleaseMutex(hMutex); }

private:
	HANDLE hMutex;
};

#endif