Merge pull request #1263 from abidrahmank:pyCLAHE_24
[profile/ivi/opencv.git] / samples / winrt / ImageManipulations / MediaExtensions / Common / CritSec.h
1 #pragma once
2
3 //////////////////////////////////////////////////////////////////////////
4 //  CritSec
5 //  Description: Wraps a critical section.
6 //////////////////////////////////////////////////////////////////////////
7
8 class CritSec
9 {
10 public:
11     CRITICAL_SECTION m_criticalSection;
12 public:
13     CritSec()
14     {
15         InitializeCriticalSectionEx(&m_criticalSection, 100, 0);
16     }
17
18     ~CritSec()
19     {
20         DeleteCriticalSection(&m_criticalSection);
21     }
22
23         _Acquires_lock_(m_criticalSection)
24     void Lock()
25     {
26         EnterCriticalSection(&m_criticalSection);
27     }
28
29         _Releases_lock_(m_criticalSection)
30     void Unlock()
31     {
32         LeaveCriticalSection(&m_criticalSection);
33     }
34 };
35
36
37 //////////////////////////////////////////////////////////////////////////
38 //  AutoLock
39 //  Description: Provides automatic locking and unlocking of a 
40 //               of a critical section.
41 //
42 //  Note: The AutoLock object must go out of scope before the CritSec.
43 //////////////////////////////////////////////////////////////////////////
44
45 class AutoLock
46 {
47 private:
48     CritSec *m_pCriticalSection;
49 public:
50         _Acquires_lock_(m_pCriticalSection)
51     AutoLock(CritSec& crit)
52     {
53         m_pCriticalSection = &crit;
54         m_pCriticalSection->Lock();
55     }
56
57         _Releases_lock_(m_pCriticalSection)
58     ~AutoLock()
59     {
60             m_pCriticalSection->Unlock();
61     }
62 };