remove \r
[extl.git] / extl / platform_ / windows / synch / critical_section_lock.h
blob0bdc8c92c9ce42b00f89994d1f9e08e4c0d31f21
1 /* ///////////////////////////////////////////////////////////////////////
2 * File: critical_section_lock.h
4 * Created: 08.03.20
5 * Updated: 08.05.05
7 * Brief: critical_section_lock class
9 * [<Home>]
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
12 #ifndef EXTL_WIN_SYNCH_CRITICAL_SECTION_LOCK_H
13 #define EXTL_WIN_SYNCH_CRITICAL_SECTION_LOCK_H
15 /*!\file critical_section_lock.h
16 * \brief critical_section_lock class
18 #ifndef __cplusplus
19 # error critical_section_lock.h need be supported by c++.
20 #endif
22 /* ///////////////////////////////////////////////////////////////////////
23 * Includes
25 #include "../win.h"
26 #include "../../synch/lock_base.h"
27 #include "critical_section.h"
29 /* ///////////////////////////////////////////////////////////////////////
30 * ::extl::platform::win namespace
32 EXTL_WIN_BEGIN_WHOLE_NAMESPACE
34 /*!\brief critical_section_lock class
35 * \ingroup extl_group_synch
37 class critical_section_lock
38 : public lock_base< critical_section_lock >
40 public:
41 typedef lock_base< critical_section_lock > base_type;
42 typedef critical_section_lock class_type;
43 typedef base_type::size_type size_type;
45 private:
46 critical_section m_cs_obj;
48 public:
49 critical_section_lock()
53 ~critical_section_lock()
55 if(base_type::is_locked())
57 base_type::unlock();
61 public:
62 void do_lock()
64 m_cs_obj.enter();
66 e_bool_t do_trylock()
68 return m_cs_obj.try_enter();
70 void do_unlock()
72 m_cs_obj.leave();
76 /* ///////////////////////////////////////////////////////////////////////
77 * Unit-testing
79 #ifdef EXTL_SYNCH_LOCK_TEST_ENABLE
80 # include "unit_test/critical_section_lock_test.h"
81 #endif
83 /* ///////////////////////////////////////////////////////////////////////
84 * ::extl::platform::win namespace
86 EXTL_WIN_END_WHOLE_NAMESPACE
88 /* //////////////////////////////////////////////////////////////////// */
89 #endif /* EXTL_WIN_SYNCH_CRITICAL_SECTION_LOCK_H */
90 /* //////////////////////////////////////////////////////////////////// */