OSDN Git Service

fix typo in readme.txt
[yamy/yamy.git] / multithread.h
1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 // multithread.h
3
4
5 #ifndef _MULTITHREAD_H
6 #  define _MULTITHREAD_H
7
8 #  include <windows.h>
9
10
11 ///
12 class SyncObject
13 {
14 public:
15   ///
16   virtual void acquire() = 0;
17   ///
18   virtual void acquire(int ) { acquire(); }
19   ///
20   virtual void release() = 0;
21 };
22
23
24 ///
25 class CriticalSection : public SyncObject
26 {
27   CRITICAL_SECTION m_cs;                        ///
28
29 public:
30   ///
31   CriticalSection() { InitializeCriticalSection(&m_cs); }
32   ///
33   ~CriticalSection() { DeleteCriticalSection(&m_cs); }
34   ///
35   void acquire() { EnterCriticalSection(&m_cs); }
36   ///
37   void release() { LeaveCriticalSection(&m_cs); }
38 };
39
40
41 ///
42 class Acquire
43 {
44   SyncObject *m_so;     ///
45   
46 public:
47   ///
48   Acquire(SyncObject *i_so) : m_so(i_so) { m_so->acquire(); }
49   ///
50   Acquire(SyncObject *i_so, int i_n) : m_so(i_so) { m_so->acquire(i_n); }
51   ///
52   ~Acquire() { m_so->release(); }
53 };
54
55
56 #endif // !_MULTITHREAD_H